14

У меня есть устройство 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?

3 ответа3

9

Вот мой официальный ответ после того, как вы ответили на мои комментарии. Я мог бы быть совершенно неправ в отношении некоторых из них и приветствовать исправления.

Я не уверен, когда 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 . Я немного заржавел на своем С, но я посмотрел на него. Похоже, что вы должны делать, когда вы собираете драйвер, сообщаете ему адреса, по которым он должен обратиться, чтобы общаться с графическим процессором. Я действительно не погружался в источник слишком глубоко, но меня не удивило бы, если бы он не говорил с шиной, а просто загружал / сохранял данные из картографического ввода-вывода напрямую.

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

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
0

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

а также

cat /proc/devices
find /proc

lshw стоит попробовать перестроиться

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .