在没有lspci的Linux上查找硬件信息


15

我有一个运行ArchLinux的ARM设备。该设备即使具有USB,也似乎没有任何PCI总线。

[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-Restate Monica-dor duh的

cat /proc/cpuinfo
迈克尔·汉普顿

这给了我唯一的 CPU信息,硬件不休息,如声音和视频芯片组。
Tu-Restate Monica-dor duh

您正在使用什么设备或平台?
LawrenceC

Answers:


10

这是您回答我的评论后的正式答复。对于其中的某些内容,我可能是完全错误的,值得欢迎的更正。

我不确定英特尔何时开始将PCIe(PCI的软件兼容扩展)集成到其CPU中。但是,在大多数情况下,x86都没有采用这种方式。PCI实际上是整个“ PC平台”的一部分,其中包括许多其他标准和预期的事物,例如设备的标准ISA端口/ I / O地址/ IRQ,以及诸如此类。

回滚到PCI出现之前-基本上,除非尝试以ISAPNP引入PnP标准,否则您并没有真正“探究”某些设备。通常,您需要假设它们事先存在。当然,您可以测试寄存器,而不看是否响应正常,但是如果那里有其他设备,则可能会导致挂起等问题,然后便会遇到麻烦。确实没有“扫描”方法ISA总线。或实际上任何其他不以标准化方式支持PnP概念的总线。

ACPI应该解决的问题之一就是提供一些信息表,这些信息可以告诉您内置了哪些ISA设备。甚至在ACPI之前,都将使用BIOS来决定系统中有多少个软盘驱动器。这就是为什么在较旧的系统上,即使没有连接软盘,如果将BIOS设置为“存在”,您也会在Windows中看到A:驱动器。

因此,您可能会问现代操作系统如何确定PCI芯片组或与PCI芯片组接口。在大多数情况下,芯片组会作为PCI总线本身上的设备出现。PCI接口在PC平台中的已知标准位置注册“预先存在”。此处可以通过编程方式扫描PCI空间中的所有设备和功能插槽。ISA根本没有这样的东西。如果设备在使用ISA的总线上,则它的寄存器在加载/存储到它时就会响应,仅此而已。您无法真正与公交车交谈。

顺便说一句,PCI芯片组甚至可能具有控制“ PCI-ISA”桥并将某些PnP功能带到ISA(或现在的LPC)总线的能力。但是,ISA表示自己是一个人。

ARM没有这样的标准平台。 仍然没有。ARM CPU运行有许多独特的平台。PCI,I2C和SDIO总线(也许还有更多我不知道的总线)是它们之间的共同点,但是同样,有些ARM平台却没有。除Microsoft Surface RT之外,ARM AFAIK上未实现ACPI。 如果不使用支持某种即插即用概念的标准化总线,那么实际上就无法“探测”任何东西。您需要在应该存在的硬件系统之外进行预知。U-Boot是一种常用的ARM引导加载程序,需要对其要在其上运行的特定平台进行支持并为其构建。这有点像标准,但即使如此,

一些简短的Google搜索显示该设备具有“ Mali 400”视频芯片组。进一步的搜索带来了Mali GPU驱动程序源代码站点。我的C语言有些生疏,但我看着它。看起来应该做的是,在构建驱动程序时,告诉它与GPU对话所需的地址。我确实没有沉迷于源代码,但是如果它不是在与总线通信,而只是直接从内存映射的I / O加载/存储,这也不会令我感到惊讶。

因此,不幸的是,我认为并非所有ARM平台都有通用的答案。


这是一个很好的深入答案。你知道什么是AMBA吗?我在内核源代码之外找不到对它的任何引用。它在公共汽车下面列出,所以它一定是某种公共汽车。
tu-Restate Monica-dor duh,

@tudor:AMBA可能意味着先进的微控制器总线架构
mpy

我曾希望所有架构都具有同等的地位,尤其是如果指定错误的架构会损坏设备!我现在接受这个问题,因为它回答了一个特定的问题,但是我认为有一个新问题是关于如何找到信息以使这些东西在内核和软件中起作用的。
tu-Restate Monica-dor duh 2014年

1

你可以试试看hwinfo。在Arch仓库中。

$ 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-Restate Monica-dor duh的

在树莓派/树莓派上尝试了hwinfo和lshw-均未显示视频适配器,因此很可能看不到它。
Journeyman Geek

0

dmesg可以提供一些信息

cat /proc/devices
find /proc

lshw应该值得尝试重建

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.