retour d'expérience linux embarqué
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

retour d'expérience linux embarqué



  1. #1
    mat64

    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 à 16h41.

  2. #2
    mat64

    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)

  3. #3
    BastienBastien
    Invité

    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.

  4. #4
    BastienBastien
    Invité

    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.".

  5. A voir en vidéo sur Futura
  6. #5
    mat64

    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

  7. #6
    BastienBastien
    Invité

    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 ?).

  8. #7
    mat64

    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 !

  9. #8
    BastienBastien
    Invité

    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

    +

  10. #9
    invite64f1f27b

    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

Discussions similaires

  1. Retour d'expérience poêle de masse
    Par farani dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 16852
    Dernier message: 24/03/2024, 16h59
  2. Photovoltaique retour d'expérience ?
    Par ririmason dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 36
    Dernier message: 06/10/2009, 17h14
  3. Programmation sous linux embarqué
    Par invite5a645688 dans le forum Électronique
    Réponses: 23
    Dernier message: 03/04/2008, 20h49
  4. Systeme embarqué:Linux
    Par invite5855bed4 dans le forum Électronique
    Réponses: 0
    Dernier message: 18/10/2007, 18h03
  5. Intégrer un Linux embarqué dans un FPGA
    Par invite28beb742 dans le forum Électronique
    Réponses: 3
    Dernier message: 12/07/2006, 09h41
Découvrez nos comparatifs produits sur l'informatique et les technologies.