如何提取我的机器上的 pci 标头类型?

如何提取我的机器上的 pci 标头类型?

我正在学习 PCI,很想知道我的机器上的设备类型,我发现lspci -x显示了配置空间,但我无法弄清楚哪一个是标头类型。请帮帮我

答案1

你往右走lspci -x将显示配置空间标准部分的标准十六进制转储,其中我们只需要第一行(256 字节),即PCI设备结构我发现的https://wiki.osdev.org/PCI

在此输入图像描述

在此输入图像描述

要为单个设备提取此数据,您可以这样做

lspci -x | grep "00: \|\." | while read -r line ; do
  if [[ "$line" == *"."* ]]; then
    echo $line
  else
    header_type=`echo $line | cut -d ' ' -f16`
    bin=`echo "obase=2; ibase=16; $header_type" | bc | rev`
    printf "%08d\n" $bin
  fi
done

我提取了第15个字节,将其转换为二进制,然后将其反转。

希望这可以帮助

相关内容