IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

Boost et les systèmes embarqués


Sujet :

Boost C++

  1. #1
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut Boost et les systèmes embarqués
    Bien le bonjour,

    je suis en train de me démander si Boost peut facilement être utilisé sur des systèmes embarqués, c'est-à-dire des systèmes à mémoire réduite (genre seulement 64 megs), facile à fragmenter (c'est-à-dire ne pas disposant d'un defragmenteur de l'OS, et donc facile à fragmenter si on fait beaucoup de petites allocations), voire même partagée sur plusieurs modules (par exemple 2 zones de RAM de hardware différents).

    J'ai 2 ans d'expérience sur un tel système (la Wii) et je me posais la question si utiliser Boost pouvait être une option, en respectant les spécifications que sont justement de ne pas utiliser la mémoire de facon abusive, en réduisant la fragmentation au minimum et permettant d'utiliser plusieurs zones de RAM.

    Nota: quand je parle de Boost, je pense notamment aux pointeurs intelligents et aux conteneurs. Les threads de Boost ne fonctionneront pas de toutes facons (bibliothèque native, pas compatible POSIX).

    Si vous avez des expériences avec Boost sur systèmes embarqués (pas que sur les consoles), faites m'en part.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    A priori, toute partie de boost qui fait des allocations peut être configurée par un allocateur de ton choix.
    Boost ftw

  3. #3
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    Au même titre que la STL d'ailleurs, c'est vrai ca, j'y avais pas pensé.
    Puis après une petite recherche, j'ai trouvé Boost.in_place qui me-semble-t-il permet de faire des allocations à l'intérieure d'un espace de mémoire deja alloué, ainsi que Boost.array qui est un array type STL vector, mais avec une longueur fixe.

    Je reviens tout de même sur ma 2eme question, j'aimerais connaître vos expériences, les erreurs à éviter, etc...

  4. #4
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Boost.array est plus à comparer à un tableau 'C-like'. c'est d'ailleurs un tableau encapsulé dans une classe.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    in-place factory c'est juste pour créer une fonction qui va appeler le constructeur sur un pointeur.
    Boost ftw

  6. #6
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    Citation Envoyé par loufoque Voir le message
    in-place factory c'est juste pour créer une fonction qui va appeler le constructeur sur un pointeur.
    Justement, cela permet d'allouer un gros espace de mémoire et d'y construire plusieurs instances au besoin. Exit la fragmentation de mémoire avec ca.

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Kurisu Voir le message
    Justement, cela permet d'allouer un gros espace de mémoire et d'y construire plusieurs instances au besoin. Exit la fragmentation de mémoire avec ca.
    Un peu de pub pour mon tuto (en cours de relecture) sur Boost In Place Factory

  8. #8
    Membre averti Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    Justement, cela permet d'allouer un gros espace de mémoire et d'y construire plusieurs instances au besoin. Exit la fragmentation de mémoire avec ça.
    Tu devrai jeter un coup d'oeil a Boost.pool, qui est justement fait pour ça.

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    En fait, Boost.In place permet de simplifier ce que el C++ permet déjà : il est possible (et c'est ce que la STL fait pour les std::vector par exemple) d'allouer la mémoire et de construire à un endroit précis par la suite.

  10. #10
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    En fait le problème avec boost sur ce type de machine c'est plutôt : est-ce que tu as accès à un compilo suffisamment standard?

    J'ai pas encore regarder voir les specifications pour le compilo fourni par nintendo pour la wii, mais sur ds ya des limitations qui suggèrent qu'une bonne partie de boost peut passer a la trappe (très malheureusement).
    Il me semble que ça s'améliore mais très très lentement.

  11. #11
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Au pire tu peux compiler vers du C.
    Mais bon dans ce cas les exceptions vont être implémentées par setjmp/longjmp.
    Boost ftw

Discussions similaires

  1. les systèmes embarqués
    Par minouch dans le forum Autres systèmes
    Réponses: 1
    Dernier message: 06/12/2010, 21h38
  2. Réponses: 0
    Dernier message: 09/07/2010, 15h18
  3. Livre sur les systèmes embarqués
    Par nicØB dans le forum Livres
    Réponses: 3
    Dernier message: 04/10/2008, 08h50
  4. Eclipse et les systèmes embarqués
    Par david cap dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/10/2006, 12h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo