Поиск информации об оборудовании в 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?

Tu-Reinstate Моника-Дор Дух
источник
Многие ARM SOC действительно не имеют шины PCI. Не уверен, как называется внутренняя шина на таких SOC, или она стандартизирована. Вы могли бы lsmodи взглянуть на свои существующие модули. Также, если у вас есть известное работающее ядро ​​с configфайлом, вы можете использовать его для начала - и поиска, потому что в нем уже выбраны правильные модули. Был полезен для меня в создании пользовательских ядер для Guruplug.
LawrenceC
Добавили результат lsmod, который в принципе ничего. Это стандартное ядро ​​ARM, поэтому никаких специальных модулей не создано. Я пытаюсь выяснить, какие модули мне нужно собрать, чтобы не затопить машину ненужными модулями.
Tu-Reinstate Monica-dor duh
cat /proc/cpuinfo
Майкл Хэмптон
Это дает мне только информацию о процессоре, но не об остальном оборудовании, например о звуковых и видео чипсетах.
Tu-Reinstate Monica-dor duh
Какое устройство или платформу вы используете?
LawrenceC

Ответы:

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, для которого требуется поддержка и сборка для конкретной платформы, на которой он предназначен. Это что-то вроде стандарта, но даже тогда

Краткий обзор Google показывает, что это устройство имеет видео чипсет "Mali 400". Дальнейший поиск приводит к исходному коду драйвера Mali GPU . Я немного заржавел на своем С, но я посмотрел на него. Похоже, что вы должны делать, когда вы собираете драйвер, сообщаете ему адреса, по которым он должен нажать, чтобы общаться с GPU. Я действительно не погружался в источник слишком глубоко, но меня не удивило бы, если бы он не говорил с шиной, а просто загружал / сохранял данные из подключенного к памяти ввода-вывода напрямую.

Так что я не думаю, что, к сожалению, есть общий ответ для всех платформ ARM.

LawrenceC
источник
Это отличный всесторонний ответ. Вы знаете, что такое AMBA? Я не смог найти никаких ссылок на него за пределами исходного кода ядра. Он указан под автобусами, так что, должно быть, это какой-то автобус.
Tu-Reinstate Monica-dor duh
Я надеялся, что будет эквивалент на всех архитектурах, тем более что вы можете повредить устройство, если укажете неправильные! Я принимаю это сейчас, так как это отвечает на конкретный вопрос, однако я думаю, что новый вопрос для того, как найти информацию, чтобы заставить эти вещи работать с ядрами и программным обеспечением.
Tu-Reinstate Monica-dor duh
1

Вы можете попробовать hwinfo. Это в репо Арки.

$ 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
ssmy
источник
1
Я хотел бы, чтобы это было так просто. Обновили вопрос. Похоже, что hwinfo для меня недоступен, по крайней мере, если у меня нет проблемы с хранилищем. Кроме того, archlinux.org/packages не содержит ARM, только i686 и x86_64.
Tu-Reinstate Monica-dor duh
Пробовал hwinfo и lshw на raspberry pi / raspian - ни один из них не показывает видеоадаптер, так что есть большая вероятность, что вы не сможете его увидеть.
подмастерье Компьютерщик
0

Dmesg может предоставить некоторую информацию

и

cat /proc/devices
find /proc

lshw стоит попытаться восстановить

RZR
источник