web-dev-qa-db-ja.com

lspciを使用しないLinuxでのハードウェア情報の検索

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が何なのかわかりません。グーグルを徹底的に検索すると、このエントリがカーネルデータベースに返されますが、実際の説明はありません。何をしているのかわからない場合は使用しないということを除けばです。

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が機能していないシステムでそれが何であるかを確認するにはどうすればよいですか?

これが私のコメントに答えた後の私の公式の答えです。私はこれのいくつかについてかなり間違っているかもしれません、そして訂正を歓迎します。

IntelがいつPCIe(PCIのソフトウェア互換拡張機能)をCPUに組み込み始めたかはわかりません。ただし、x86が存在するほとんどの場合、この方法はありませんでした。 PCIは、実際には「PCプラットフォーム」全体の一部であり、標準ISAポート/ I/Oアドレス/デバイスのIRQなど) 。

PCIが登場する前に少しロールバックしてください-基本的に、ISAPNPでPnP標準を導入しようとする試みの中止を除いて、一部のデバイスでは実際に「プローブ」しませんでした。一般に、それらが事前に存在していたと想定する必要があります。もちろん、レジスタをテストして、期待どおりに応答するかどうかを確認する必要はありませんが、別のデバイスがそこにあると、問題が発生してハングする可能性があります。実際には、「スキャン」する方法がありませんでした。 ISAバス。または、標準化された方法でPnPの概念をサポートしていない他のバス。

ACPIが解決するはずだったものの1つは、ISAデバイスが組み込まれていることを通知する情報の表をいくつか提供することでした。ACPIの前でさえ、BIOSに問い合わせて、フロッピードライブの数を決定しますこのため、古いシステムでは、フロッピーが接続されていない場合でも、BIOSでドライブが存在するとA:ドライブが表示されます。

そのため、最近のOSがどのようにPCIチップセットを決定するか、またはPCIチップセットとインターフェースするかを尋ねる場合があります。ほとんどの場合、チップセットはPCIバス自体のデバイスとして表示されます。 PCIインターフェイスは、PCプラットフォームの既知の標準的な場所に「既存」で登録されます。ここでは、PCIスペース内のすべてのデバイスおよび機能スロットを介したプログラムによるスキャンが可能です。 ISAにはそのようなものはありません。デバイスがISAを備えたバス上にある場合、ロード/ストア時にレジスタが応答し、それだけです。あなたはバス自体に実際に話すことはできません。

ちなみに、PCIチップセットには、「PCI-ISA」ブリッジを制御して、PnP機能の一部をISA(または、現在はLPC)バスに接続する機能があります。それ自体は、 ISAとはいえ、あなたは一人でいると言っています。

ARMにはそのような標準プラットフォームはありません。とにかく、まだです。 ARM CPUが動作する多くのユニークなプラットフォームがあります。PCI、I2C、およびSDIOバス(そしておそらく私が知らないより多くのバス)は、それらのいくつかの間で共通点ですが、繰り返しますが、 ARMそれらのどれもないプラットフォーム。ACPIは、Microsoft Surface RT以外では実装されていませんARM AFAIK。なしPnPの一部の概念をサポートする標準化されたバスで作業する場合、実際に何かを「プローブ」する方法はありません。ハードウェアのシステムの外部に存在するはずのハードウェアの知識が必要です。U-Bootは一般的に使用されるARMブートローダーであり、実行することを意図した特定のプラットフォームのサポートが必要であり、そのプラットフォーム用に構築されます。これは標準のようなものですが、それでも通常は私の理解からプラットフォームごとに構築されました。

簡単なグーグル検索で、このデバイスには「Mali 400」ビデオチップセットが搭載されていることがわかります。さらに検索すると、 Mali GPUドライバーのソースコード サイトが表示されます。私のCは少し錆びていますが、見ました。ドライバーがビルドするときに、GPUと通信するためにヒットする必要があるアドレスをドライバーに伝えてください。ソースに深く浸りすぎたことはありませんでしたが、バスと通信しておらず、メモリマップされたI/Oから直接ロード/保存しているだけでも、驚くことではありません。

残念ながら、すべてのARMプラットフォームに一般的な答えはありません。

10
LawrenceC

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
ssmy

dmesgはいくつかの情報を提供できます

そして

cat /proc/devices
find /proc

lshwは再構築するために試してみる価値があります

0
rzr