⑴ 概念

PCI和PCI Express,是计算机常使用的一种高速总线。操作系统中的PCI/PCI-E设备驱动以及操作系统内核,都需要访问PCI及PCI-E配置空间。PCI/PCI-E设备的正常运行,离不开PCI/PCI-E配置空间。

① PCI Express 1.1
使用兩對低電壓的差位訊號排線(low-voltage differential signaling pairs),分別各跑2.5GBit/s速度,下面的速度是以單對的速度而言. x1 有兩對 2.5 G x 2 = 5Gbps 的頻寬.
x1 2.5Gbps(20% overhead - PCI-e 在每八個位元的資料串上用十位元來加以編碼) 2Gbps (250 MB/sec)
x4 10Gbps 8Gbps (1 GB/sec)
x8 20Gbps 16Gbps (2GB/sec)
x16 40Gbps 32Gbps (4GB/sec)

② PCI Express 2.0
PCI-SIG 的 PCI Express 2.0規格,新版每條Lane的單向頻寬從2.5Gbps倍增到5Gbps.
x1 5Gbps(20% overhead-PCIe並且在每八個位元的資料串上用十位元來加以編碼) 4Gbps (500 MB/sec)
(5G*0.8)Mb/8=500MB
x4 20Gbps 16Gbps (2 GB/sec)
x8 40Gbps 32Gbps (4 GB/sec)
x16 80Gbps 64Gbps (8 GB/sec)

例如:09:00.0 0c04: 1077:2432 (rev 03)
09:00.0 就是 bus number = 09 ,device number = 00 function = 0 .
這3個編號會組合成一個 16-bits 的識別碼,

匯流排(bus number) 8bits 2^8 至多可連接 256 個匯流排(0 to ff),
裝置(device number) 5bits 2^5 至多可接 32 種裝置(0 to 1f) 以及
功能(function number) 3bits 2^3 至多每種裝置可有 8 項功能(0 to 7).
0c04 : class 0c04 表示是 "Fiber Channel controller"
1077 : vendor ID 1077 製造廠商 "Qlogic Corp"
2432 : device ID 2432 產品名稱 "ISP2432-based 4Gb Fiber Channel to PCI Express HBA"

使用指令:#lspci -n -d 1077:2432 -vvv |grep -i width 就可以得知 PCI-Express 的速度了.

⑵ PCI-E设备配置空间读取

读取PCI-E设备配置空间命令:lspci [options]

常用参数:

-v 显示设备的详细信息。

-vv 显示设备更详细的信息。

-vvv 显示设备所有可解析的信息。

-x 以16进制显示配置空间的前64字节,或者CardBus桥的前128字节。

-xxx 以16进制显示整个PCI配置空间(256字节)。

-xxxx 以16进制显示整个PCI-E配置空间(4096字节)。

-s [[[[]:]]:][][.[]]:

显示指定设备。

示例: lspci -vvvxxxx -s 00:14.0

⑶ PCI-E设备配置空间修改

修改PCIE配置空间命令:setpci [options] devices

主要的参数如下:

-s [[[[]:]]:][][.[]]

常用命令格式和参数如下:

setpci -s BUSID:DEVID.FUNCID REGISTEROFFSET.B=NEWVALUE

setpci -s BUSID:DEVID.FUNCID REGISTEROFFSET.W=NEWVALUE

setpci -s BUSID:DEVID.FUNCID REGISTEROFFSET.L=NEWVALUE

示例:setpci -s 0:14.0 60.B=6
将设备0:14.0设备,PCI配置空间偏移量为0×60,写入新的字节值为6。查看PCI配置空间修改是否生效,可以通过lspci命令来查看,如设置0:14.0后,读取命令为lspci –s 0:14.0 –xxx。

⑷ 扫描PCI设备

扫描或探测PCI/PCI-E设备的命令为:scanpci [-v12OfV]

常用参数:

-v 打印所有设备的配置空间信息。

-1 使用PCI配置Type 1。

-2 使用PCI配置Type 2。

-f 与-1或-2参数结合,强制使用某种类型。

-O:使用OS的PCI配置空间访问方式访问。

原文参考:http://blog.chinaunix.net/uid-1829236-id-3188434.html
原文参考:http://blog.sina.com.cn/s/blog_720c3ccf0101en7p.html

Linux(debian7)操作基础(三)之PCI/PCI-E设备配置空间相关推荐

  1. Linux(debian7)操作基础(十二)之文件加密使用指南

    ⑴ 普通文件加密 ① OpenSSL ② GnuPG 缺点:只适合加密保存,不适合运行. 请参考原文:https://blog.gtwang.org/linux/how-to-encrypt-data ...

  2. Linux(debian7)操作基础(四)之CPU频率调整

    在Linux中,内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的,它就是CPU Freq系统.如下为CPU的几种模式(governor参数): ondemand:系统默认的超频模式,按需 ...

  3. Linux(debian7)操作基础(十五)之systemd下lightdm免密登录

    继上一篇lightdm详解中介绍了如何免密登陆之后, 最近由于系统把启动方式升级成了systemd方式, 突然发现不能使用该方式进行自动登陆了, 然后上网查资料, 发现根本没有, 自己经过研究后发现, ...

  4. Linux(debian7)操作基础(十四)之文本搜索命令grep使用方法

    一.简介 grep(global search regular RE ) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则 ...

  5. Linux(debian7)操作基础(十三)之shell脚本同时执行多个应用程序

    (1) 使用&符号让应用程序在后台运行即可 ./myapp1 & ./myapp2 & ./myapp

  6. Linux(debian7)操作基础(十)之字符界面使用指南

    (1) 字符界面下如何免密登陆? ① 使用命令:sudo vim /etc/inittab ② 在/etc/inittab下更改54行中为"1:2345:respawn:/bin/login ...

  7. Linux(debian7)操作基础(五)之per调用shell命令

    ⑴ system命令 说明:perl可以用system调用shell的命令,不获取执行shell命令的输出值. 用法:system("shell cmd"); ⑵ 反引号 说明:p ...

  8. Linux多用户操作基础

    Linux多用户操作 账户实质 账户实质上就是一个用户在系统上的标识 系统根据账户来区分每个用户的文件.进程.任务,给每个用户提供特定的工作环境(如用户的工作目录.shell版本.以及X-Window ...

  9. Linux(debian)操作基础(二)之ASPM(活动状态电源管理)

    ASPM(Active State Power Management 活动状态电源管理) 概念:微软VISTA以及之后的系统上所支持的一种电源链接管理方案,尝试在设备(PCI Express)空闲时采 ...

最新文章

  1. 前端知识之HTML内容
  2. LeetCode Algorithm 204. 计数质数
  3. Leetcode题库796.旋转字符串(C++实现)
  4. C++ - 进阶 1002
  5. Java模因拒绝死亡
  6. ffmpeg摄像头推流
  7. 误删了公司数据库,但我还是活下来了
  8. 文档化ring3 api列举驱动列表 --- 做了一些重构。(解决内存泄漏问题)
  9. lede虚拟服务器,在虚拟机中安装 LEDE 软路由
  10. panasonic打印机驱动下载
  11. 数据分析(经典泰坦尼克号竞赛入门题)
  12. Xposed获取微信好友列表(通讯录),看看这是你要的详细吗
  13. kafka的消费顺序_Kafka如何保证消息的顺序性
  14. C#操作Word(五)——在Word文档中插入图片
  15. 数据分析项目:用户消费行为分析
  16. 快速了解B+树的插入、删除操作
  17. Matlab中的c2d函数离散化
  18. idea 资源文件各种花色的意义。是做啥子的
  19. 教你用 Python 自制简单版《我的世界》
  20. 什么是ERP?ERP系统如何工作?

热门文章

  1. python语言中print函数的作用_python中如何使用print函数
  2. C++/OpenCV:读取视频与调用摄像头
  3. 笨方法“学习python笔记之输入
  4. python批量修改labelme(COCO)标注的json文件的label标签名称
  5. 【pytorch】torch.meshgrid()==>常用于生成二维网格,比如图像的坐标点
  6. phpcmsV9支付: 支付宝支付配置 (资源汇总)
  7. Mint-UI框架router-link返回上一页的方法 - 踩坑篇
  8. 某易游戏经典吃豆豆动画404页面源码
  9. 三星电视开机显示服务器异常,三星液晶电视常见故障及维修方法
  10. 怎么创建python django项目_python怎么创建django