Précédent Forum FS Generation > Futura-Techno : les forums de l'informatique et des technologies > Électronique
Mot de passe oublié ? Inscrivez-vous !




Réponse
Outils de la discussion Modes d'affichage
Vieux 03/04/2008, 17h38 Message #1 de cette discussion

Date d'inscription: novembre 2006
Messages: 490
retour d'expérience linux embarqué

Bonjour,

suite à la discussion dans cette file, je vous livre un petit retour d'expérience sur le développement d'un produit électronique autour de linux. En me relisant, je me rends compte que la suite va faire un peu "spot publicitaire", je précise que ce n'est pas le but. Il est évident que beaucoup de choses que je décris ici peuvent être faites avec d'autres systèmes : windows CE, ou bien d'autres OS embarqués. Je ne les cites pas parce que je n'ai pas expérimenté, c'est tout. Je serais heureux d'entendre des retours d'expérience sur d'autres systèmes.

Le produit est un système de commande employé dans des bâtiments industriels ou tertiaires. Il se présente sous la forme d'une unité centrale qui pilote un réseau de capteurs et d'actionneurs sur un bus de terrain.

En guise d'introduction, voila un exemple d'une opération que j'ai effectué cette semaine, et que je n'aurais jamais imaginé pouvoir faire avant de travailler avec un linux embarqué. Notre système étant équipé d'un MODEM, j'ai pu me connecter par téléphone sur une de nos machines installée sur site (à 500 km de mon bureau). Dès lors je me retrouve dans la même configuration que lorsque je développe dans mon laboratoire via une liaison Ethernet. Je dispose d'un terminal (un peu comme une fenêtre DOS ou invite de commandes windows, pour ceux qui ne connaissent pas linux), via un protocole sécurisé bien sur (ssh pour les intimes). J'ai donc pu mettre mon programme à jour sans quitter mon bureau.
Rien d'extraordinaire pour un informaticien. Fabuleux pour le petit électronicien que je suis (j'étais ?).

Au niveau hard

nous avons utilisé une "carte processeur", c'est à dire une petite carte qui supporte le processeur, de la RAM, et de la flash. Plusieurs avantages : c'est livré tout installé, avec quelques exemples, et ça concentre tout ce qui est technique au niveau conception PCB (les BGA, le multicouche...). Evidemment, selon les volumes produits, on peut avoir intérêt à tout intégrer directement sur sa carte.
la carte que nous avons choisie : PXA255 DIMM Module Pro du fabricant slovaque voipac
En résumé :
  • Processeur intel PXA255/400MHz (un ARM destiné à l'origine aux PDA)
  • 32MB FLASH
  • 64MB SDRAM
D'autres fabricants de ce type de cartes existent. Quand nous avons commencé en 2004, voipac était un des rares à livrer avec linux pré installé. Plusieurs fabricants affichaient un pingouin sur leur plaquette, mais quand on appelait le service technique : "Ah oui, linux, .... euh ... ça doit être possible de le faire tourner oui. Si vous y arrivez vous nous tiendrez au courant ! " Depuis de nombreux fabricants s'y sont mis. Notez qu'il y a aussi d'autres "form factor" : PC104, pc industriel en boitier, etc.
Voir des exemples ici, ou encore, le champion du low-cost : un PC sans pièce mobile, en boitier pour 85 $ (à l'unité) ici.

Si le choix devait être refait aujourd'hui, je prendrais un processeur x86, pour avoir un maximum de compatibilité avec les outils existants. Nous n'avons pas eu beaucoup de problèmes avec le ARM, mais un point nous a gêné : c'est l'absence de support de RTAI (cf paragraphe soft). De plus les avantages du ARM (moins de conso et un meilleur coût) ne sont pas décisifs pour notre projet.

Sur notre carte mère, nous avons rajouté autour de la carte processeur : un MAC Ethernet (Asix AX88796L), un transceiver RS485, un MODEM 56k (la aussi un module tout fait), une RTC sauvegardée (DS1335) et pour l'interface graphique, un codeur rotatif + une dalle TFT 640x480 (le contrôleur est intégré au processeur, je me contente de sortir un connecteur). La carte est 4 couches à cause du MAC.

Au niveau soft

pourquoi utiliser linux ?
Dans notre cas, nous avions besoin : d'une interface graphique évoluée, de communications TCP/IP, de programmes de contrôle de MODEM, d'une batterie d'outils pour se connecter et diagnostiquer/déboguer à distance. Et bien sur d'un ordonnanceur pour que tout ce petit monde fonctionne en parallèle de notre application. Tout ça est déjà fait (et bien fait) dans linux. Il y a des tas d'autres raison : coût, diversité des applications disponibles, support de type communautaire (comme le forum futura, quoi ) qui me convient mieux (et fonctionne pas plus mal qu'un service technique dans l'expérience que j'ai eue). Enfin il y a la disponibilité des sources. C'est un argument classique des pro-open source, qui n'avait jamais retenu mon attention en tant qu'utilisateur de PC de bureau. Mais pour mon développement embarqué, j'en ai eu besoin à deux reprises. J'ai pu écrire un driver en modifiant des sources existantes, en moins de temps qu'il n'en faut pour le dire. Et j'ai pu comprendre le détail du fonctionnement d'une sous-partie du système qui nous posait problème à un moment donné (le port série).

les outils de développement
nous utilisons la aussi du logiciel libre.
compilateur : gcc. Pour ARM, un compilateur croisé (tourne sur PC mais produit des exe ARM) est disponible chez gnuarm.
Nous utilisons un éditeur de texte et make pour gérer le processus de compilation. Pour les fans des IDE, il est possible d'utiliser Eclipse, Codeblocks, Kdevelop...
déboguage : gdb (pas à pas, points d'arrêts...). C'est un outil en ligne de commande. Il est possible de faire tourner gdbserver sur la cible, et gdb sur le PC de développement, le tout en liaison Ethernet. Nous l'utilisons très (très) peu. Notre code outillé avec quelques fonctions de report et log d'erreurs nous apporte un confort suffisant pour la mise au point.

les noyaux / librairies
- noyau que nous utilisons actuellement : 2.4.19. La nouvelle version de notre machine en cours de développement aura un 2.6.xx, qui devrait bénéficier d'un meilleur temps de réponse grâce à l'amélioration de l'ordonnanceur.
- nous utilisons la libc standard, la prochaine version aura uclibc optimisée pour les systèmes pauvres en ressources.

les drivers
c'est le point qui peut parfois bloquer, même si de gros progrès ont été faits. Dans notre cas, les drivers standards ont du être légèrement modifiés (par le fournisseur de la carte processeur) pour faire fonctionner le MAC Ethernet (AX88796L, qui est un clone de NE2000) et la RTC (DS1339). Il m'a fallu écrire un driver (simplissime) pour un codeur rotatif en quadrature qui nous sert d'interface utilisateur.

les distributions
Nous n'avons pas trouvé de distribution dédiée à l'embarqué satisfaisante. Dans la version actuelle du produit, il y a une distribution pré installée (apparemment basée sur une debian). Pour la prochaine version, nous avons monté notre système à partir de BusyBox "le couteau suisse de linux embarqué". busybox compile la toolchain, le noyau, et les outils que l'on souhaite placer dans notre distribution "maison".

temps réel
Attention : avec un système de ce genre on a pas la même réactivité qu'avec un processeur programmé "directement" (sans OS). Actuellement avec notre noyau 2.4 on a un temps de réaction de 10 ms.
Si on a besoin de faire du "temps réel", il va falloir utiliser des outils appropriés. Selon les besoins, il existe des patchs qui permettent d'augmenter la réactivité, ou de véritables OS temps-réel qui cohabitent avec linux : RTAI ou Xenomai. Attention, le support des ARM annoncé chez RTAI était de la publicité mensongère quand je m'y suis intéressé il y a environ un an . Je n'ai pas regardé récemment.

conclusion : Je suis parti du niveau 0 sur linux. Quand j'ai commencé ce projet, j'avais installé linux sur mon PC perso 15 jours avant "pour voir". bien sur, il faut adapter ses ambitions à son niveau, c'est pourquoi j'ai commencé avec des systèmes "tout prêts", il n'était pas question au départ de jouer avec busybox ou RTAI. Mais c'est la preuve qu'il existe des solutions à la portée d'un électronicien...

Dernière modification par mat64 ; 03/04/2008 à 17h41.
mat64 est déconnecté Bookmark and Share Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

__________________
Inscrivez-vous au forum gratuitement pour poser votre question.

Poursuivez votre recherche
Recherche personnalisée
Vieux 08/04/2008, 11h38 Message #2 de cette discussion

Date d'inscription: novembre 2006
Messages: 490
Re : retour d'expérience linux embarqué

systèmes de fichiers / place occupée

un petit complément (habile le up, n'est-ce pas ? )

Suite à la parution d'un article sur linuxfr, je me rends compte que je n'ai pas parlé des systèmes de fichiers.

Il existe plusieurs systèmes de fichiers conçus spécifiquement pour être utilisés sur de la mémoire flash. Pour notre projet, nous utilisons JFFS2, qui est intégré au noyau linux "officiel". Nous n'avons pas de souci de fiabilité. Seule petite surprise, lorsque la flash est pleine, on s'attendais à avoir l'erreur "NO SPACE LEFT ON DEVICE" à la prochaine tentative d'écriture. Que nenni, avec en prime corruption des fichiers existants. Je ne dis pas que c'est un bug de JFFS2, on s'est peut être planté en le mettant en œuvre. En tout cas, si vous jouez avec ces trucs la, méfiez vous...nous on s'en est sortis avec un programme qui tourne en tâche de fond pour faire du ménage.

Pour vous donner une idée des tailles:
- notre système actuel (noyau 2.4, debian nettoyée, serveur Xr11, icewm, GTK1...) : 20 Mbit de flash (+512k pour le noyau)
- nouvelle version en préparation (noyau 2.6, distrib buildroot "maison", ...) : 7 Mbit de flash. (+768k pour le noyau)
nb : ce sont des tailles compressées (jffs2 compresse avant d'écrire en flash)
mat64 est déconnecté Bookmark and Share Réponse avec citation
Vieux 08/04/2008, 11h46 Message #3 de cette discussion

Date d'inscription: décembre 2007
Localisation: devant mon écran !
Messages: 1152
Re : retour d'expérience linux embarqué

Hello,

J'avais également lu ce très intéressant article. Dommage que les alternatives modernes à JFFS2 ne soient pas encore disponibles à temps pour votre nouvelle plate-forme. Je pense bien évidemment à UBIFS.

Merci.
BastienBastien est déconnecté Bookmark and Share Réponse avec citation
Vieux 17/04/2008, 16h08 Message #4 de cette discussion

Date d'inscription: décembre 2007
Localisation: devant mon écran !
Messages: 1152
Re : retour d'expérience linux embarqué

Bonjour à tous,

A noter que le noyal Linux 2.6.25 est sorti ce jeudi 17 avril à 03:15 UTC : http://eu.kernel.org/

Vous pouvez lire, par exemple, ici : http://linuxfr.org/2008/04/17/23919.html, que "Le support des bus de données de type CAN (Controller Area Network) a été ajouté au noyau 2.6.25.".
BastienBastien est déconnecté Bookmark and Share Réponse avec citation
Vieux 17/04/2008, 16h48 Message #5 de cette discussion

Date d'inscription: novembre 2006
Messages: 490
Re : retour d'expérience linux embarqué

Et oui, j'ai vu ces bonnes nouvelles. Il y a encore des améliorations prévues au niveau du temps réel dans les prochaines releases (2.6.26) : voir ici
mat64 est déconnecté Bookmark and Share Réponse avec citation
Vieux 17/04/2008, 19h41 Message #6 de cette discussion

Date d'inscription: décembre 2007
Localisation: devant mon écran !
Messages: 1152
Re : retour d'expérience linux embarqué

Bonsoir,

Il se durcit, petit à petit...

Dommage que http://kernelnewbies.org/ soit encore down, je voulais afficher les améliorations du support de l'ARM (7 ou 9, je me souviens plus ?).
BastienBastien est déconnecté Bookmark and Share Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

Vieux 17/04/2008, 23h34 Message #7 de cette discussion

Date d'inscription: novembre 2006
Messages: 490
Re : retour d'expérience linux embarqué

Citation:
Envoyé par BastienBastien Voir le message
Il se durcit, petit à petit...
dis donc, ça te fait de l'effet linux !
mat64 est déconnecté Bookmark and Share Réponse avec citation
Vieux 13/05/2008, 19h43 Message #8 de cette discussion

Date d'inscription: décembre 2007
Localisation: devant mon écran !
Messages: 1152
Re : retour d'expérience linux embarqué

Bonjour à tous,

Oh oui, Linux me fait de l'effet. Idem pour ce qui est du gros GNU poilu.

Plus sérieusement, voici un article intéressant :

Publication d'un rapport et de vidéos d'Embedded Linux Conference 2008 et de vidéos du FOSDEM 2008 -->> http://linuxfr.org/2008/05/13/24080.html

+
BastienBastien est déconnecté Bookmark and Share Réponse avec citation
Vieux 03/01/2009, 12h34 Message #9 de cette discussion

Date d'inscription: septembre 2003
Localisation: Belgique
Messages: 3
Thumbs down Re : retour d'expérience linux embarqué

Bonjour à vous tous et tous mes meilleurs voeux à vous !


Voilà, un peu comme mat64, je me lance dans Linux embarqué en partant de 0
( dur dur... ).

Venant du monde des µC 8 bits et après avoir lu différents textes sur Linux et son intégration dans des cartes munie de RAM, méoires Flash et autres composants,
j' en arrive à me poser une question qui jusqu' à aujourd' hui, ne m' était pas
vraiment apparue comme un problème.

En fait voilà, partant d' un µC 8 bit, ce dernier exécute en général son code
depuis une flash interne ou une EEPROM externe à l' aide d' un compteur
interne => jusque là, rien d' extraordinaire.

Maintenant, passons sur Linux ( ou tout autre O/S genre Windows, etc... ).

J' ai cru comprendre que dans le cas de Linux, le bootloader à pour mission de charger le Kernel en mémoire RAM et de passer la main à l' OS par la suite.

Ma question est donc la suivante :

contrairement à un µC 8 bit qui lit en permanence le code à éxécuter dans sa flash ou son EEPROM externe, ou le processeur exécutant Linux va t' il chercher
son code à éxécuter une fois le Kernel démarrer ???

Ma question n' est peut être pas très claire mais pour résumé, est - ce que le processeur lit uniquement son code dans la RAM ???

Et si oui, je suppose que dans les processeurs capable de faire tourner un O/S,
il existe un moyen pour que le processeur ne tourne que depuis sa RAM et non plus en lisant un permanence une Flash ou une EEPROM ???


Par exemple, une fois un PC démarrer, on voit bien que le système tourne sans accéder en permanence au disque dur => le processeur va donc chercher son code en RAM !


Qu' en penses vous, ma question est digne d' un débutant, mais sur un O/S
comma Linux embarqué, j' en suis vraiment un !!!


Jean - Pierre
J-P V-R est déconnecté Bookmark and Share Réponse avec citation
Annonces publicitaires (Futura Sciences n'est pas responsable du contenu de ces publicités)
Réponse

Tags
embarque, linux, linux embarque

Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non




Les dernières actualités
07/11 13:31 - Verrons-nous le Kilimandjaro sans neige ?
07/11 10:30 - Alimentation : vers des étiquettes "sans OGM"
07/11 09:34 - Ephémérides novembre 2009 : découvrez ce que le ciel vous réserve !
06/11 18:07 - Livres : au pays des champignons
06/11 17:29 - La thérapie génique sauve deux enfants de l'adrénoleucodystrophie
06/11 16:21 - Le problème nauséabond des algues vertes
06/11 14:59 - Salon Marjolaine : du bio et un scoop, l'explosif film Food, Inc.


Fuseau horaire GMT +1. Il est actuellement 15h07.


Édité par : vBulletin®
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd. Tous droits réservés.