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

Linux Discussion :

Bus lsusb et lspci


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 29
    Points
    29
    Par défaut Bus lsusb et lspci
    Bonjour,

    Je suis entrain d'apprendre les commandes Linux et pour le moment j'en suis à lsusb, j'ai fait le petit test suivant:

    je lance lsusb:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Bus 001 Device 002: ID 0424:2504 Standard Microsystems Corp. USB 2.0 Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 003: ID 0461:4d15 Primax Electronics, Ltd Dell Optical Mouse
    Bus 002 Device 002: ID 413c:2003 Dell Computer Corp. Keyboard
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    J'ai deux ports usb, je met une clé usb sur le premier port et je relance lsusb:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Bus 001 Device 011: ID 0930:6545 Toshiba Corp.
    Bus 001 Device 002: ID 0424:2504 Standard Microsystems Corp. USB 2.0 Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 003: ID 0461:4d15 Primax Electronics, Ltd Dell Optical Mouse
    Bus 002 Device 002: ID 413c:2003 Dell Computer Corp. Keyboard
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    je l'enlève et je la met dans le deuxième:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Bus 001 Device 012: ID 0930:6545 Toshiba Corp.
    Bus 001 Device 002: ID 0424:2504 Standard Microsystems Corp. USB 2.0 Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 003: ID 0461:4d15 Primax Electronics, Ltd Dell Optical Mouse
    Bus 002 Device 002: ID 413c:2003 Dell Computer Corp. Keyboard
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Je ne comprends pas pourquoi c'est toujours le même bus qui est toujours utilisé, a quoi sert donc le second s'il n'est jamais utilisé? Pour moi les bus sont des cables qui relient des choses et qui partent du southbridge (excellent graph ci-dessous), à quoi servent toutes les autres lignes?

    Je vais un peu abuser, et demander la même chose pour lspci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    00:00.0 RAM memory: nVidia Corporation C51 Host Bridge (rev a2)
    00:00.1 RAM memory: nVidia Corporation C51 Memory Controller 0 (rev a2)
    00:00.2 RAM memory: nVidia Corporation C51 Memory Controller 1 (rev a2)
    00:00.3 RAM memory: nVidia Corporation C51 Memory Controller 5 (rev a2)
    00:00.4 RAM memory: nVidia Corporation C51 Memory Controller 4 (rev a2)
    00:00.5 RAM memory: nVidia Corporation C51 Host Bridge (rev a2)
    00:00.6 RAM memory: nVidia Corporation C51 Memory Controller 3 (rev a2)
    00:00.7 RAM memory: nVidia Corporation C51 Memory Controller 2 (rev a2)
    00:02.0 PCI bridge: nVidia Corporation C51 PCI Express Bridge (rev a1)
    00:03.0 PCI bridge: nVidia Corporation C51 PCI Express Bridge (rev a1)
    00:04.0 PCI bridge: nVidia Corporation C51 PCI Express Bridge (rev a1)
    00:05.0 VGA compatible controller: nVidia Corporation C51 [GeForce 6150 LE] (rev a2)
    00:09.0 RAM memory: nVidia Corporation MCP51 Host Bridge (rev a2)
    00:0a.0 ISA bridge: nVidia Corporation MCP51 LPC Bridge (rev a3)
    00:0a.1 SMBus: nVidia Corporation MCP51 SMBus (rev a3)
    00:0a.2 RAM memory: nVidia Corporation MCP51 Memory Controller 0 (rev a3)
    00:0b.0 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)
    00:0b.1 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)
    00:0e.0 IDE interface: nVidia Corporation MCP51 Serial ATA Controller (rev a1)
    00:0f.0 IDE interface: nVidia Corporation MCP51 Serial ATA Controller (rev a1)
    00:10.0 PCI bridge: nVidia Corporation MCP51 PCI Bridge (rev a2)
    00:10.1 Audio device: nVidia Corporation MCP51 High Definition Audio (rev a2)
    00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
    00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
    00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
    00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
    02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5754 Gigabit Ethernet PCI Express (rev 02)
    Ca veut dire quoi ca? J'ai l'impression qu'il ya deux controleurs usb qui sont relié en PCI (à quoi d'ailleurs)?? C'est louche...



    Merci de m'éclairer

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    On peut commencer par la traduction de USB qui veut dire Universal Serial Bus. Quand on parle de série, ça veut dire qu'ils sont tous reliés les uns à la suite des autres. Ce qui veut dire que la plupart de tes ports USB auront le même bus. En fonction de ta carte mère, tu peux avoir plus ou moins de bus, mais avoir 1 périphérique USB pour 1 bus USB va à l'encontre même du principe série.
    Le port parallèle par contre (qui disparaît peu à peu), lui est un bus parallèle comme son nom l'indique. C'est à dire qu'il ne peut y avoir qu'un bus pour un périphérique. Toutes les données sont transmises en même temps, alors qu'en série les données sont transmises à la suite.

    Pour la commande lsusb, tu as le numéro du bus et le numéro du périphérique sur ce bus. L'ID (unique) est l'identification de ton matériel et ensuite tu as des informations concernant ton matériel.

    D'ailleurs, d'après ton lspci, on voit bien que tu disposes de 2 bus USB.

    00:0b.0 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)
    00:0b.1 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)


    Ce que je te recommande pour avoir des informations sur ce que te retournent les différentes commandes, c'est simplement... d'aller voir la page de man ! (RTFM !) Tout y sera expliqué.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Merci, j'ai déjà lu TFM, mais mon problème se situe à un autre niveau. Dites moi laquelle de ces deux phrases est juste:

    - Ma carte USB est branchée sur un bus PCI et c'est ce dernier qui est branché sur le southbridge, cette carte USB a deux bus en plus d'avoir deux ports.

    - Il n'y a pas de carte usb, mais deux bus USB qui sont branchés chacun sur un bus pci et ces deux bus pci sont branchés sur le southbridge.

    Je crois qu'aucune des deux n'est juste, mais même ce que tu dis Pouet_forever me parait bizarre, car si tous mes ports usb sont branchés sur le même bus usb, à quoi sert l'autre? En plus, en branchant deux clés usb chacune sur l'un des ports, chacune a été branchée sur un bus usb différent d'après lsusb.

    En fait je cherche à visualiser comment est transportée l'information à partir de chacun des deux ports usb jusqu'au southbridge. Si vous m'expliquez ca, je vous en serai très reconnaissant.

    Une fois ceci fait, j'aimerai continuer à cartographier ma carte mère dans les moindres détails.

    Merci

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Bon, après plusieurs heures de recherches voilà ce que je commence à me dire:

    Les ports usb doivent être branchés tous les deux sur une carte d'où partent deux bus usb et chacun de ses deux bus et connecté au southbridge qui lui même est relié au northbridge par un bus PCI. Cela fait donc que quand je met une première clé dans l'un des deux ports usb, la route vers le processeur sera du type:

    Port 1 ou 2 --> Bus usb 1 --> Southbridge --> bus PCI --> Northbridge --> Bus CPU --> CPU

    Quand je met une seconde clé, la carte se rend compte que l'un des deux bus est toujours occupé et préfère donc utiliser le second, ce qui donne:

    Port 1 ou 2 --> Bus usb 2 --> Southbridge --> bus PCI --> Northbridge --> Bus CPU --> CPU

    En faisant donc un lspci, on voit les deux bus usb et avec un lsusb on obtient le bon résultat. Par contre je ne m'explique pas encore pourquoi ils appellent un bus usb un controleur usb. Voyez vous pourquoi? Ni l'interet de "série" dans cette architecture

    Merci

  5. #5
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    C'est ton southbridge qui gère ton USB. Il doit y avoir une partie matérielle dédiée qui gère ça (un peu comme ta carte son).

    Visiblement, tu n'as pas compris le principe même du bus série.
    On va prendre un exemple simple. Dans le commerce, tu trouves des hub usb (première image trouvée sur google) :



    Sur ce hub, on voit bien que tu n'as qu'un seul fil d'arrivée, c'est celui qui est relié au PC et que tu as 7 ports USB disponibles ensuite.
    Le principe même du bus série est que tu câble tes périphériques les uns à la suite des autres !
    1 -> 2 -> 3 -> 4 -> etc... -> 127
    Certes, ça rend le traitement d'information plus long, mais ça a l'avantage de limiter drastiquement le nombre d'interfaces dédiées. Sur un bus USB, le contrôleur peut supporter jusqu'à 127 périphériques. Bon, tu risques d'avoir des chutes de tension et l'intensité délivrée par ton contrôleur est limitée à 500mA, donc tu seras limité de toutes manières.

    Dans ton schéma, je pense que tu peux t'arrêter au southbridge, c'est lui qui gère tes périphériques d'entrée/sortie, pas le northbridge ni le CPU. C'est pour ça que ton chipset est divisé en 2 parties, pour partager les tâches.

    La différence entre contrôleur et bus.
    Le contrôleur c'est "la source" matérielle.
    Un bus, c'est une interface dans laquelle va transiter les données. (hmm, pas vraiment ça, mais je sais pas comment l'expliquer)

    On peut faire une analogie avec une rivière. La source, c'est ton contrôleur qui délivre de l'eau. La rivière c'est ton bus qui transporte tout un tas de choses à travers cette eau (poissons, bois, sable, etc.).

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Je t'en suis vraiment reconnaissant Pouet_forever d'essayer de m'aider et oui j'ai bien compris ce que tu m'as expliqué sur le fonctionnement en série, mais comme je l'ai déjà dit, si mes deux ports sont branchés sur le même bus, comment se fait il que quand je connecte deux clés usb sur les deux ports, chacune est branchée à un bus différent?

  7. #7
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    C'est que tes 2 ports sont reliés à un bus différent, tout simplement.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Désormais, il faut croire que j'ai vraiment du mal. Je ne comprends pas vraiment la phrase "tes 2 ports sont reliés à un bus différent"? Que chacun des deux est relié à un bus différent...?? ce n'est surement pas ca, car quand je connecte une seule clé sur l'un des deux ports, a chaque fois c'est le bus 1 qui est utilisé, et ce n'est que quand 2 clés usb sont branchés que les deux bus sont utilisés.

    Je m'excuse mais j'ai un petit cerveau

  9. #9
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Non, non, ya pas de petit cerveau ni rien !
    Les bus que tu vois sont sûrement des bus logiques et non des bus physiques.
    Afin de faire abstraction de la couche matérielle, l'OS nous masque la partie physique à l'aide d'une partie logique. En gros, c'est le driver qui mets les mains dans le camboui et qui fait tourner le moteur, et toi tu conduits la voiture.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Mon but est justement de comprendre tout ca pour programmer un petit os (je suis entrain d'étudier le code de SOS et les articles de ce dernier en plus de ceux de l'OS Pépin). Si j'ai bien compris, je n'ai donc finalement qu'un seul bus usb relié à un seul controleur usb?

    Merci

  11. #11
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Si tu veux programmer un mini-os, ça va au-delà de mes compétences.
    Je t'ai dit ce que je pouvais te dire, après je ne veux pas m'avancer et dire des bêtises (bien qu'il y a certaines choses que j'ai dites qui sont erronées).

    Bon courage pour la création de ton os.
    Essaye de faire partager ton projet sur le forum.

Discussions similaires

  1. Bus
    Par Ryadus dans le forum Composants
    Réponses: 11
    Dernier message: 13/12/2005, 10h16
  2. [MFC] Gestion d'un bus GPIB
    Par angeromudelparis dans le forum MFC
    Réponses: 8
    Dernier message: 04/10/2005, 12h25
  3. Programmation du bus PCI
    Par mikevador02 dans le forum Assembleur
    Réponses: 8
    Dernier message: 11/03/2004, 14h56
  4. [Windows CE] Gestion du bus ISA
    Par Guilhem dans le forum MFC
    Réponses: 7
    Dernier message: 10/03/2004, 15h36
  5. [TP] Gestion des bus PCI en pascal
    Par prodexys dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 18/04/2003, 22h08

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