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

Embarqué Discussion :

carte fox-lx832, ajouter des programmes et bibliothèques


Sujet :

Embarqué

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut carte fox-lx832, ajouter des programmes et bibliothèques
    Salut, et merci pour ton tuto qui est super !

    J'ai deux petites questions à propos de la Fox:

    Je voulais lui remettre un nouveau programme dans la mémoire flash, mais il n'y avait plus de place. J'ai donc delete plusieurs programmes.. Mais toujours pas de place. Quel est la méthode pour libérer de la place dans la mémoire flash?

    Etant bloqué j'ai eu la mauvaise idée de reflash la fox. J'avais donc ensuite la place de remettre mes programmes mais il y a maintenant une erreur de segmentation au lancement de ces programmes ! (qui marchaient avant...)
    Je crois que cela vient d'une incompatibilité entre les versions du SDK et du noyau sur la carte... Mais je ne suis pas certain.. une idée?

    Autre problème: je n'arrive pas a recréer une nouvelle image de noyau: j'ai deux erreurs à la compilation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    make[2]: *** [extensions/libipt_string_sh.o] Erreur 1
    make[2]: quittant le répertoire « /home/Bureau/Test/devboard-R2_01/apps/iptables-IR1_2_7a-3 »
    make[1]: *** [install-recurse] Erreur 1
    make[1]: quittant le répertoire « /home/Bureau/Test/devboard-R2_01 »
    make: *** [everything] Erreur 2
    Ou est le problème?

    Merci d'avance !

  2. #2
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Outch, pas simple comme situation.

    Pour libérer de la place, il n'y a pas énormément de solutions.
    Soit on refait une image du système plus compacte, soit on se monte une clé USB ou disque dur en USB. La seconde solution étant la plus simple, dans la mesure où la clé est reconnue et montable. La mémoire flash de base sur la carte n'étant pas énorme, la solution USB reste tout de même super pratique pour rajouter de nouveaux programmes.

    De mémoire, j'avais eu quelques problèmes à la recompilation du noyau de la Fox. J'avoue que je n'ai jamais réellement poussé plus, faute de temps.
    Tu peux trouver des images du système sur le site d'Acme Systems, tu gagneras du temps.
    Sinon essaie de contacter directement le constructeur ou bien te rendre sur les groupes google de la carte fox. Les gens de chez Acme Systems sont très commerciaux et très à l'écoute de leurs clients, ils pourront sans doute t'aider dans le cas où tu ne trouverais pas de solution simple à ton problème.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ton aide !

    J'ai installé le SDK 2.20 et ça va mieux on dirais... Mais j'ai un nouveau problème: au lancement d'un de mes programmes, il semble manquer une bibliothèque. J'ai regardé dans /lib et effectivement il manque bien la bibliothèque en question: libpthread.so.0. Le problème est que je n'arrive pas à la mettre ! Je fait put libpthread.so.0 en ftp. Et j'ai ça
    valid command
    550 unknown error

    Comment on ajoute une librairie correctement? Une idée du problème?

    Merci beaucoup

  4. #4
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Alors, il y a de fortes chances que le /lib soit en lecture seule. Je ne me souviens plus exactement des montages. Ça doit être en cramfs, ce qui fait que l'ajout de bibliothèque est impossible directement.

    Tu peux essayer en plaçant libpthread.so.0 dans /usr/local/lib qui ne doit pas être en lecture seule, si je ne m'abuse. Sinon place la dans un dossier lib de ton choix en lecture/écriture et rajoute ton dossier dans la variable d'environnement : LD_LIBRARY_PATH

    Sinon tu peux la placer à côté de ton exécutable et lancer ton appli de cette façon :
    LD_LIBRARY_PATH=. ./application

    Sinon, si ça ne marche toujours pas. Tu te créés un dossier dans lequel tu places un dossier /bin et /lib
    Tu places alors dans ton lib toutes les bilbiothèques dont dépendent ton programme et ton programme dans le /bin tu fais un chroot de ton répertoire conteneur et tu dois être en mesure d'exécuter ton programme avec les dépendances de ton choix.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Merci beaucoup pour ta réponse (avec du retard désolé...) Ca m'a aidé, j'arrive à lancer mes programmes avec
    LD_LIBRARY_PATH=. ./application
    Mais c'est assez embêtant de taper toute cette ligne

    Alors je cherche une solution à mon problème... Je suis sur qu'on peut mettre directement une bibliothèque dans /lib. Mais je n'y arrive pas. D'autre méthode que le ftp pour placer des fichier sur la fox?

    Sinon ta méthode en utilisant la variable d'environnement rendra-t-elle la recherche des bibliothèques automatique ou devrais-je retaper aussi le nouveau chemin de la variable d'environnement à chaque fois? Ou dois-je placer cette ligne? :
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/flash/lib

    J'ai aussi essayer de placer ma bibliothèque dans usr/lib. Même problème que dans /lib, le transfert ne se fait pas...


    Merci beaucoup !

  6. #6
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Ah ! Tes questions ont changé en cours de route

    Sinon ta méthode en utilisant la variable d'environnement rendra-t-elle la recherche des bibliothèques automatique ou devrais-je retaper aussi le nouveau chemin de la variable d'environnement à chaque fois?
    par défaut, le loader va aller chercher dans les dossiers indiqués dans /etc/ld.so.conf
    Ensuite, si l'exécutable ldconfig est présent sur la carte, ce qui n'est pas gagné d'avance, un simple ldconfig va reconfigurer les bibliothèques. Mais je ne suis pas certain que ldconfig soit présent sur cette version de la Fox. Bien souvent, j'ai dû me le compiler moi même pour les cartes sur lesquelles j'ai travaillé.

    Ton /usr/lib doit être certainement sur la même partition que ton /lib et donc en lecture seule, ce qui est pénible. Ta seule solution est de déposer tes lib sur ta carte flash et de préciser au loader quels dossiers charger.

    Donc tu as raison, un simple export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/flash/lib devrait te régler le problème une fois pour toute (pour ta session)

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Pour le baud rate j'ai enlevé ma question parce que je m'en suis sortie en rajoutant ces deux lignes de code dans la configuration du port série:
    (void)cfsetispeed(&new_attributes, B9600);
    (void)cfsetospeed(&new_attributes, B9600);
    Ça a l'air de marcher...
    Ok pour les 115k par défaut, j'avais crut le remarquer mais j'avais pas eu confirmation!

    Pour les librairies, je vais peut être essayer de tout mettre sur clé USB. Ça sera plus pratique, et ça éliminera le problème de place (device memory out of space...).
    Par contre j'ai pas compris ta réponse pour le
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/flash/lib
    Ou apparait cette ligne de commande? Si elle n'est valable que pour une session, c'est la même chose que de mettre LD_LIBRARY_PATH=. ./application, à part que la librairie se trouve dans un dossier lib ????

    En plus faut que je fasse en sorte que mon programme boot automatique à l'allumage de la fox. Ils expliquent ça sur le site d'ACME je crois... Je vais essayer !

    Merci encore !

  8. #8
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Eh bien, au démarrage de la carte, il faut lancer un export automatique du LD_LIBRARY_PATH ou lancer les programmes avec cette variable passée en tête.

    Ou apparait cette ligne de commande? Si elle n'est valable que pour une session, c'est la même chose que de mettre LD_LIBRARY_PATH=. ./application, à part que la librairie se trouve dans un dossier lib ????
    Donc c'est complètement pareil dans les deux cas, c'est juste que ça devient rapidement pénible de spécifier le LIBRARY_PATH à chaque fois.

    Pour le démarrage automatique, il faut regarder du côté du dossier boottime qui se situe je ne sais plus trop où (j'en parle dans mon tuto)

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bon ça avance !
    J'ai écrit un petit script shell, lorsque je le lance j'arrive à lancer mon programme qui est sur clé USB, et à charger les librairies qui sont sur la clé USB aussi ! Donc ça c'est bon ça marche, c'est ce que je voulais.
    Par contre, j'aimerai que se script se lance tout seul au démarrage de la FOX ! Alors normalement il faut le placer dans /etc/init.d/boottime. Mais ce dossier n'existait pas... Apparemment ça vient d'une différence entre les différents SDK. J'ai vu qu'il y avait une autre solution: appeler le script dans le script RC (qui se situe dans etc/init.d).
    C'est ce que j'essaye de faire mais ça ne marche pas...

    Voilà quelqu'un qui procède comme ça:
    I'm running an application from a USB-mem at boot time.
    I've put the commands to mount the mem and execute this app in a
    separate script and put it in "/etc/init.d".
    I'm calling this script from the "rc" script, which is located in
    "/etc/init.d", right before the line with "System initialization is done".
    It contains the command for mounting the USB-mem, which in my case is:
    "mount -t vfat /dev/sda1 /mnt/1"
    It works perfectly when cycling power.

    Ce qu'il ne dit pas c'est comment il appel son script, c'est peut être ce que je fait mal...

    Je vais essayer de mettre directement les lignes de mon script dans RC pour voir... même si c'est loin propre.

    [EDIT]: Ca marche avec les lignes directement dans RC !

Discussions similaires

  1. Introduction à la carte FOX LX832
    Par Aquanum dans le forum Embarqué
    Réponses: 8
    Dernier message: 24/01/2012, 11h44
  2. Introduction à la carte FOX LX832
    Par Aquanum dans le forum Contribuez
    Réponses: 75
    Dernier message: 13/05/2011, 09h44
  3. carte fox-lx832, temps mort sur un programme
    Par remi_d dans le forum Embarqué
    Réponses: 1
    Dernier message: 06/01/2011, 11h52
  4. carte fox-lx832, probleme sdk et reseau
    Par Netsky56 dans le forum Embarqué
    Réponses: 19
    Dernier message: 14/05/2010, 10h06
  5. carte fox-lx832, ping impossible
    Par hm55hm dans le forum Embarqué
    Réponses: 1
    Dernier message: 31/03/2010, 12h06

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