Forum Linux.noyau Problem avec la connection USB avec PC sous linux !! !

Posté par  .
Étiquettes : aucune
0
11
déc.
2008
Bonjour tous le monde,
J'ai acheté un kit ZSTAR2 de freescale constitué de deux partie dans l'une doit se connectée au PC via USB,le kit fonctionne parfaitement sous windows, il envoit des trames RS232 et je peux les récupérés grace à un hyerterminal, mais malheureusement j'ai pas un driver qui peut communiqué evec ce kit sous Linux et je ne sais pas comment faire pour récupérer ses données !!!
J'ai essaez d'utiliser libusb pour communiquer avec le kit mais aucune réponse !! avec une message d'erreur :" peripherique busy !!!! "
voila qlq donnés à partie du document de fournisseur qui décrit un peu le type de communication avec le PC :
"5.4 STAR Protocol and ZSTAR Extensions (Over USB)
The ZSTAR demo uses a subset of the original STAR demo protocol commands. This way, most of the
software originally developed for the RD3112MMA7260Q (STAR) is also usable with the ZSTAR.
The STAR demo communicates over the RS232 serial line with a simple text-based protocol. The same
protocol is used in ZSTAR for communication between the USB stick and a PC (over a virtual serial port).
The PC application sees the same interface (serial port) and the same protocol as if a STAR demo was
connected."
le lien de document est le suivant ::http://www.freescale.com/files/senso...RRM.pdf?fpsp=1
J'ai besoin de votre aide
Merci d'avance .
  • # over a virtual serial port ...

    Posté par  (site web personnel) . Évalué à 2.

    Bonjour,
    je ne connais pas ce kit, mais vu de loin (meme de tres loin), il emule un port serie sur un usb.
    apres avoir branche ta carte sur le port usb de ton linux, il faut faire un "dmesg" pour voir si il a attache un nouveau port serie :

    [603479.186521] usb 1-2: new full speed USB device using ohci_hcd and address 6
    [603479.399300] usb 1-2: configuration #1 chosen from 1 choice
    [603479.402586] usb 1-2: New USB device found, idVendor=067b, idProduct=2303
    [603479.402598] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [603479.402603] usb 1-2: Product: USB-Serial Controller
    [603479.402606] usb 1-2: Manufacturer: Prolific Technology Inc.
    [603479.727185] usbcore: registered new interface driver usbserial
    [603479.727221] usbserial: USB Serial support registered for generic
    [603479.727270] usbcore: registered new interface driver usbserial_generic
    [603479.727273] usbserial: USB Serial Driver core
    [603479.740328] usbserial: USB Serial support registered for pl2303
    [603479.740383] pl2303 1-2:1.0: pl2303 converter detected
    [603479.772262] usb 1-2: pl2303 converter now attached to ttyUSB0
    [603479.772303] usbcore: registered new interface driver pl2303
    [603479.772308] pl2303: Prolific PL2303 USB to serial adaptor driver

    dans ce cas, il ne reste plus qu'a ouvrir un minicom (par exemple) sur le port /dev/ttyUSB0
    • [^] # Re: over a virtual serial port ...

      Posté par  . Évalué à 1.

      Merci pour ta réponse,
      J'ai essayé "dmesg" et j'ai eu le message suivante :

      "usb 5-2: new full speed USB device using uhci_hcd and address 2
      usb 5-2: configuration #1 chosen from 1 choice
      drivers/usb/class/cdc-acm.c: This device cannot do calls on its own. It is no modem.
      cdc_acm 5-2:1.0: ttyACM0: USB ACM device
      usbcore: registered new driver cdc_acm
      drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters"

      je ne sais pas comment l'analysé !! est ce que vs avez une idée !!

      Merci en tt cas :)
      • [^] # Re: over a virtual serial port ...

        Posté par  (Mastodon) . Évalué à 2.

        Il lance le module cdc_acm (module noyau pour les modem cable par exemple)

        Il va falloir éditer une règle udev afin qu' il fasse les opérations correctes, celles indiquées par Arthurr, lorsque tu branches la clef : qu' il l' attache à une TTYSUB par exemple.
        Ainsi tu pourra lancer Konsole par exemple ou alors le bon vieux minicom.

        Cdlt.
        • [^] # Re: over a virtual serial port ...

          Posté par  (Mastodon) . Évalué à 2.

          ps : une fois ceci résolue, ça serait super sympa d' envoyer un rapport de bug sur le bugzilla de ta distribution, en collant dans le corps du message le résultat de
          lspci -v
          ainsi que le message que tu as copié ici, fruit d' un tail -f sur /var/log/message lancé juste avant de brancher ta clef.
          Enfin, inclure la règle udev modifiée, ordonnant le chargement du bon module, en proposition de correctif.
          Merci
          • [^] # Re: over a virtual serial port ...

            Posté par  . Évalué à 1.

            Salut,
            J'ai pas bien compris qu'est ce que vs voulez dire par :"Il va falloir éditer une règle udev afin qu' il fasse les opérations correctes, celles indiquées par Arthurr" !!
            un peu d'explication si c'est possible !!
            Merci de tt façon :)
          • [^] # Re: over a virtual serial port ...

            Posté par  . Évalué à 1.

            Salut,
            J'ai pas bien compris qu'est ce que vs voulez dire par :"Il va falloir éditer une règle udev afin qu' il fasse les opérations correctes, celles indiquées par Arthurr" !!
            un peu d'explication si c'est possible !!
            Merci de tt façon :)
            • [^] # Re: over a virtual serial port ...

              Posté par  (Mastodon) . Évalué à 3.

              Grosso modo :
              lorsqu' on branche un matériel usb :
              _ le noyau se met en branle
              _ un service, avec les informations fournies, demande au noyau de charger le bon driver
              _ le noyau charge le driver
              _ un device est créait, correspondant au matériel, et permettant à des applications d' y accéder.

              C' est grosso modo le même phénomène quel que soit l' OS (sauf que nous on l' étape Udev / Hal ou que Udev).
              Créait un device à la main reviendrait à faire un mknode en sachant les numéros mineurs et majeurs corrects. Un nouveau device peux demander une mise à jour d' une table : libpcidata.a par exemple. Dans notre cas cette table c' est chez udev qu' il faut la prendre :

              Ici, ton périphérique est bien vu, et udev demande au noyau de charger un driver. Mais celui demandé n' est pas le bon pour ton utilisation. Il faut donc inscrire une règle udev spécifique, ou corrigée celle existante pour ce device là, afin que à chaque fois que tu branches ce périphérique, le bon driver soit chargé.

              Là, du coup, il faudrait faire à la main :
              retrait du driver chargé : rmmod cdc-acm
              chargement du driver adéquat : modprobe pl2303 (par exemple, si ce périph est géré par ce module)
              Mais c' est mieux de tout faire en automatique une fois pour toute (donc règle udev)

              Pour être sûr du driver :
              http://google.fr/linux
              et cherche la ligne référence pour ce périph', sortie du résultat de :
              lsusb
              (ou lspcidrake -v si tu utilises mandriva, cette commande résume l' essentiel)

              J' espère avoir été clair, sans trop d' embrouille ou de faute

              Cdlt.

              ps : tu peux coller le résultat de la commande citée (lspcidrake ou lsusb quant le périph est branché) sur le forum correspondant à ta distribution. Nul doute que quelqu' un fera les recherches nécessaires et te donnera la marche à suivre.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.