lister tous les composants d'un ordinateur ARM sous Linux?

18

J'ai un ordinateur basé sur ARM qui semble fonctionner correctement sous Ubuntu Linux (non GUI). Comment obtenir une liste de tous les composants présents sur cet ordinateur? comme le type de puce Ethernet, puce Wifi, Bluetooth, CPU, puce de gestion d'alimentation, etc. si possible.

Curieux101
la source

Réponses:

11

La variation des implémentations ARM est trop élevée pour être couverte par les outils standard.

En creusant, /sys/classvous trouverez tous vos composants, mais c'est difficile de le faire. Vous ne pouvez pas utiliser find /sys/class -name namepour trouver tous les composants en raison des liens symboliques. Vous ne pouvez pas non plus l'utiliser à find -Lcause des liens circulaires.

cat /sys/class/*/*/device/*/{,*/,*/*/}name */*/device/*/name|sort -u

vous donne une idée des périphériques, mais si vous voulez vraiment connaître les périphériques avec des pilotes réellement chargés, vous devrez lire manuellement votre dmesg.

Philippos
la source
Merci Philippos. Je vais passer un peu de temps avec cela et je ferai rapport.
Curious101
8

Pour répertorier le matériel dans les appareils IoT, généralement les commandes les plus utiles après dmesgsont cat /proc/cpuinfoet lsusb.

Dans la plupart des marques IoT, se lsusbrévèle utile, comme par exemple sinovoip (banane) a tendance à connecter une grande partie du matériel au (x) contrôleur (s) USB.

Quant à la liste de TOUS les composants; ce ne sera pas possible. Il n'existe aucune méthode fiable pour répertorier les composants connectés via les normes GPIO ou i2c.

Voir des exemples pour la framboise:

cat /proc/cpuinfo, en plus de répertorier tous les cœurs / threads (4 d'entre eux ici), répertorie à la fin le modèle de chipset, la révision et, dans certaines cartes , le numéro de série. (il faut glisser jusqu'au bout pour le voir)

pi@raspberrypi:~ $ cat /proc/cpuinfo
processor   : 0
model name   : ARMv7 Processor rev 4 (v7l)
BogoMIPS   : 38.40
Features   : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part   : 0xd03
CPU revision   : 4

processor   : 1
model name   : ARMv7 Processor rev 4 (v7l)
BogoMIPS   : 38.40
Features   : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part   : 0xd03
CPU revision   : 4

processor   : 2
model name   : ARMv7 Processor rev 4 (v7l)
BogoMIPS   : 38.40
Features   : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part   : 0xd03
CPU revision   : 4

processor   : 3
model name   : ARMv7 Processor rev 4 (v7l)
BogoMIPS   : 38.40
Features   : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part   : 0xd03
CPU revision   : 4

Hardware   : BCM2709
Revision   : a02082
Serial      : 00000000xxxxxxxx

Et lsusb:

$ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 005: ID 05dc:a781 Lexar Media, Inc.
Rui F Ribeiro
la source
L'OP mentionnait "puce Ethernet, puce Wifi, Bluetooth, CPU, puce de gestion de l'alimentation". Je ne connecterais aucun de ceux-ci via USB. Ethernet je fais principalement avec PCIe, WLAN avec SDIO ou PCIe, Bluetooth avec UART et PMIC avec I2C / SMbus. C'est un monde complexe là-bas ...
Philippos
@Philippos, je ne le ferais pas trop ... Le problème est que de nombreux fournisseurs chinois le font en clones rpi en raison de facteurs de coût - le wifi via USB est assez courant. J'ai tendance à rester loin des cartes qui implémentent Ethernet et SATA via USB.
Rui F Ribeiro
1
Intéressant, je ne l'ai pas rencontré. Peut-être parce que je travaille avec des systèmes que j'ai conçus moi-même. Maintenant, je me souviens avoir vu des modules 802.11ac avec port USB2 et je me demandais pourquoi quelqu'un pouvait vouloir le standard rapide avec frein à main USB. (-X
Philippos
Merci Rui. Je vais y consacrer du temps. Appréciez la mini discussion entre Philippos et Rui sur celui-ci. Cela m'a fourni des informations utiles sur ce qu'il fallait rechercher. je ferai rapport après avoir passé un peu de temps à ce sujet.
Curious101
4

L'architecture ARM n'a pas de bus PCI. Ils utilisent le bus AMBA.

AMBA

Diagramme de bloc ARM

Dmesg vous fournira la plupart des informations dont vous avez besoin.

Simon-Pierre Dubé
la source
1
Je ne sais pas quel appareil vous nous montrez, mais il existe de nombreux SoC ARM avec PCIe. Malheureusement, la plupart des périphériques comme le GPU interne n'utilisent pas PCIe, ils ne seront donc pas visibles avec lspci. Ainsi, alors que la première partie de votre réponse est fausse, la seconde est correcte: dmesgc'est la voie à suivre.
Philippos
Pas beaucoup, non. Seuls les Juno ont des voies PCI. Et vous ne le trouverez sur aucun appareil disponible pour les consommateurs, car il n'a jamais décollé, trop cher à produire et pas assez populaire. Ce que vous pouvez voir, ce sont des emplacements Mini-PCIe. Mais ils sont pilotés par le concentrateur USB, il n'y a pas de bus PCI du tout. Comme ça ! un . Il ne sera pas vu par lspci. Mais je suis prêt à me tromper, trouvez-moi un consommateur disponible avec des voies PCIe.
Simon-Pierre Dubé
Uniquement à partir des SoC ARM avec lesquels je travaille actuellement: La famille i.MX6 de Freescale (-> NXP -> Qualcomm), probablement le SoC le plus répandu de cette classe, a PCIe, ainsi que les puces Sitara AM57 * et AM5K * de TI et Tegra K1 de Nvidia et Snapdragon 600E de Qualcomm. Les consommateurs peuvent obtenir des cartes de développement ou des cartes communautaires ou des appareils finaux (comme certains Chromebooks basés sur K1) avec ceux-ci. Je ne suis donc pas d'accord: oui, beaucoup. La plupart dans cette classe
Philippos
1

La lshwcommande donne une liste assez complète des composants de votre ordinateur.

Vous pouvez l'obtenir sur Ubuntu avec apt-get install lshw.

Julie Pelletier
la source
4
Vous n'avez jamais couru lshwsur une boîte à bras, n'est-ce pas? Je n'ai jamais vu lshwfournir même un tiers des composants connus du système via l'arborescence des périphériques.
Philippos
1

Pour répertorier tous les composants d'un système Linux, vous pouvez utiliser:

  • La inxicommande avec -optionvoirinxi -h
  • La hwinfocommande similaire lshwet plus détaillée.
  • le /procrépertoire qui contient toutes les informations sur le système, la mémoire, les périphériques, le matériel ....
GAD3R
la source
2
Fonctionne dmidecodemême sur ARM? Ne repose-t-il pas sur les normes IBM PC BIOS?
dirkt
1
@dirkt Pas même un petit peu. Il ne fonctionne que sur les systèmes i386, x86_64 et certains systèmes ia64.
duskwuff