Пошук апаратної інформації на Linux без lspci


15

У мене є пристрій ARM під управлінням ArchLinux. Схоже, на пристрої немає шини PCI, навіть якщо він має USB.

[root@alarm ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
[root@alarm ~]# lspci
pcilib: Cannot open /proc/bus/pci
lspci: Cannot find any working access method.
[root@alarm ~]# 

Я хочу знайти, які ще є чіпсети. Наприклад, я знаю, що є звукова карта та відеокарта, здатна підтримувати HDMI. Така мікросхема не буде розміщена на лінії USB.

Я переглянув конфігурацію ядра, яка зараз працює на пристрої за адресою /proc/config.gz, у ньому перераховано таке:

#
# Bus support
#
CONFIG_ARM_AMBA=y
# CONFIG_PCI_SYSCALL is not set
# CONFIG_ARCH_SUPPORTS_MSI is not set
# CONFIG_PCCARD is not set

Я не знаю, що таке AMBA. Ретельний пошук google повертає цей запис у базі даних ядра, але без фактичного пояснення, крім того, щоб не використовувати його, якщо ви не знаєте, що ви робите.

Використання lshw також не показує більше:

[root@alarm ~]# lshw
alarm                     
    description: Computer
    width: 32 bits
  *-core
       description: Motherboard
       physical id: 0
     *-memory
          description: System memory
          physical id: 0
          size: 307MiB
     *-cpu
          physical id: 1
          bus info: cpu@0
          size: 1008MHz
          capacity: 1008MHz
          capabilities: cpufreq
  *-network
       description: Ethernet interface
       physical id: 1
       logical name: eth0
       serial: 00:01:02:03:04:05
       size: 10Mbit/s
       capacity: 100Mbit/s
       capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
       configuration: autonegotiation=off broadcast=yes driver=wemac driverversion=1.01 duplex=half ip=192.168.1.1 link=yes multicast=yes port=MII speed=10Mbit/s
[root@alarm ~]# 

Здається, що в цьому ядрі модулів немає:

[root@alarm ~]# lsmod
Module                  Size  Used by
[root@alarm ~]# 

Крім того, схоже, hwinfo не доступний:

[root@alarm ~]# pacman -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 alarm is up to date
 aur is up to date
:: Starting full system upgrade...
 there is nothing to do
[root@alarm ~]# pacman -S hwinfo
error: target not found: hwinfo
[root@alarm ~]# hwinfo
-bash: hwinfo: command not found
[root@alarm ~]# 

Мені потрібно знати, які мікросхеми використовуються в цій системі, щоб я міг компілювати у потрібні модулі відеодрайвера, як я можу дізнатись, що це в системі без робочих lspci?


Багато ARM SOC дійсно не мають шини PCI. Не впевнені, як називається внутрішня шина на таких SOC, чи якщо вона стандартизована. Ви можете lsmodі подивитися на існуючі модулі. Крім того, якщо у вас є відоме робоче ядро ​​з configфайлом, ви можете використовувати це для початку - і шукати навколо, оскільки в ньому вже будуть вибрані правильні модулі. Мені було корисно в створенні спеціальних ядер для Guruplug.
LawrenceC

Додали результат lsmod, який в принципі нічого. Це загальне ядро ​​ARM, тому конкретних модулів не побудовано. Я намагаюся з’ясувати, які модулі я повинен побудувати, щоб я не затоплював машину марними модулями.
tu-Reinstate Monica-dor duh

cat /proc/cpuinfo
Майкл Хемптон

Це дає мені лише інформацію про процесор, а не інше обладнання, наприклад, звукові та відео чіпсети.
tu-Reinstate Monica-dor duh

Який пристрій чи платформу ви використовуєте?
ЛоуренсC

Відповіді:


10

Ось моя офіційна відповідь після вашої відповіді на мої коментарі. Я можу зовсім помилятися з приводу цього і приймати виправлення.

Я не впевнений, коли Intel почала включати в свої процесори PCIe (що є розширенням PCI-сумісного програмного забезпечення). Однак це було не так уже більшість часу, коли x86 був навколо. PCI - це дійсно частина всієї "платформи ПК", яка включає ряд інших речей, які є стандартними та очікуваними, як, наприклад, стандартні порти ISA / адреса вводу / виводу / IRQ для пристроїв тощо.

Відкат трохи до того, як відбувся PCI - в основному, за винятком випадків, коли не припиняється спроба запровадити стандарт PnP з ISAPNP, ви не справді «зондували» деякі пристрої. Як правило, потрібно було б припустити, що вони існували раніше. Ви, звичайно, можете тестувати регістри, а чого не бачити, чи реагуватимуть так, як очікувалося, але ви потрапляєте у біду, якщо є інший пристрій, можливо, це призвело до зависання тощо. Дійсно не було способу "сканувати" автобус ISA. Або ж будь-яка інша шина, яка не підтримує концепції PnP стандартизовано.

Однією з речей, які повинен був вирішити ACPI, було надання деяких таблиць інформації, яка розповіла, які вбудовані пристрої ISA. Ще до початку ACPI проконсультувалися з BIOS, щоб визначити, скільки дискети було в системі. Ось чому в старих системах, навіть якщо у вас немає підключеної дискети, ви побачите диск A: у Windows, якщо у вас встановлено BIOS, щоб сказати, що він є.

Тож ви можете запитати, як сучасні ОС визначають чи взаємодіють із чіпсетом PCI. Більшу частину часу чіпсет з’являється як пристрій на самій шині PCI. Інтерфейс PCI реєструє "існувати" у відомих стандартних місцях на платформі ПК. Тут можливе програмне сканування всіх слотів для пристроїв та функцій у просторі PCI. Нічого подібного не існує для ISA. Якщо пристрій знаходиться на шині з ISA, він реєструє, коли він завантажується / зберігається, і все. Ви не можете реально розмовляти з автобусом.

Між іншим, чіпсет PCI може навіть мати можливість контролювати міст "PCI-ISA" і приносити частину функціональності PnP на шину ISA (або тепер, LPC). Однак, ISA каже, що ви самостійно.

Не існує такої стандартної платформи для ARM. Ще ні, все одно. Існує багато унікальних платформ, на яких працюють ARM-процесори. Шини PCI, I2C та SDIO (і, можливо, більше я не знаю) є спільністю між деякими з них, але знову ж таки, є платформи ARM, які не мають жодної з них. ACPI не реалізується на ARM AFAIK, за винятком Microsoft Surface RT. Без роботи зі стандартизованою шиною, яка підтримує певне поняття PnP, насправді немає можливості "пробувати" що-небудь. Потрібно мати передбачення поза системою апаратного забезпечення, яке повинно бути там. U-Boot - це часто використовуваний завантажувач ARM, який вимагає підтримки та будується для певної платформи, на якій він повинен працювати. Це щось на зразок стандарту, але навіть тоді це

Деякі короткі позначення Googling виявляють, що на цьому пристрої є відеочіпсет "Mali 400". Подальший пошук приносить сайт вихідного коду драйвера GPU . Я трохи іржавий на своєму С, але я на це подивився. Здається, що ви повинні робити, коли ви збираєте драйвер, повідомте йому адреси, на які він повинен потрапити, щоб поспілкуватися з GPU. Я дійсно не занурювався у джерело надто глибоко, але це не здивувало б мене, якщо він не розмовляє з шиною, а просто завантажує / зберігає з вбудованого в пам'ять вводу / виводу безпосередньо.

Тому я не думаю, що існує загальна відповідь для всіх платформ ARM, на жаль.


Це чудова глибока відповідь. Чи знаєте ви, що таке AMBA? Я не міг знайти жодних посилань на нього поза джерелом ядра. Він вказаний під автобусами, тхо, тому це повинен бути якийсь автобус.
tu-Reinstate Monica-dor duh

@tudor: AMBA, ймовірно, означає « Розширена архітектура
шин

Я сподівався, що в усіх архітектурах буде еквівалент, тим більше, що ви можете пошкодити пристрій, якщо вказати неправильні! Я зараз приймаю це, оскільки він відповідає на конкретне запитання, проте, я думаю, нове питання полягає в тому, як знайти інформацію, щоб ці речі працювали з ядрами програмного забезпечення та програмним забезпеченням.
tu-Reinstate Monica-dor duh

1

Можна спробувати hwinfo. Це в Arch repos.

$ hwinfo --gfxcard
08: PCI 02.0: 0300 VGA compatible controller (VGA)              
[Created at pci.318]
Unique ID: _Znp.jjHn_gm8Jz5
SysFS ID: /devices/pci0000:00/0000:00:02.0
SysFS BusID: 0000:00:02.0
Hardware Class: graphics card
Model: "Intel VGA compatible controller"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x0162 
SubVendor: pci 0x1849 "ASRock Incorporation"
SubDevice: pci 0x0162 
Revision: 0x09
Driver: "i915"
Driver Modules: "drm"
Memory Range: 0xf7800000-0xf7bfffff (rw,non-prefetchable)
Memory Range: 0xe0000000-0xefffffff (ro,non-prefetchable)
I/O Ports: 0xf000-0xf03f (rw)
IRQ: 57 (6 events)
Module Alias: "pci:v00008086d00000162sv00001849sd00000162bc03sc00i00"
Driver Info #0:
Driver Status: i915 is active
Driver Activation Cmd: "modprobe i915"
Config Status: cfg=new, avail=yes, need=no, active=unknown

Primary display adapter: #8

1
Я б хотів, щоб це було так просто. Оновили питання. Здається, hwinfo мені недоступний, принаймні, якщо у мене не проблема з сховищем. Крім того, archlinux.org/packages не містить ARM, лише i686 та x86_64.
tu-Reinstate Monica-dor duh

Спробували hwinfo та lshw на малиновому пі / raspian - не показує відеоадаптер, тому є хороший шанс, що ви не зможете його побачити.
Подорожник Geek

0

dmesg може надати деякі відомості

і

cat /proc/devices
find /proc

lshw варто спробувати відновити

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.