PCIE配置空间设置
当pcie链路信号质量不好,导致Pcie链路报错时需要将链路降速进行测试。链路速率可以通过pcie功能寄存器(PCI Express Capabilities Register)进行配置。Pcie功能寄存器可以通过配置空间中Capabilities Register (0x34)寄存器来查找首地址。
PCIE 设备基本配置空间定义如下:
PCIE 桥基本配置空间如下:
配置空间Capabilities Register (0x34)地址存放Capabilitie首地址。通过lspci命令查看一个pcie桥片配置空间如下:
配置空间0x34地址值为0x40
另外通过lspci –vvv也可以查看配置空间信息如下:
Capabilities也是0x40。
功能寄存器定义如下:
上面桥片功能寄存器对应的如下:
功能寄存器对应的相关值如下:
PCI Expres Cap ID:0x10
Next Cap Pointer:0x80
PCI Express Capabilities Register:0x0042(根桥端口Root Port of PCI Express Root Complex*)
Link Capabilities:0x01717c13(支持8GT/s)
Link Control Register: 0x0,寄存器定义如下:
Link Control 寄存器第Retrain Link (5)位设置成1时速率会重新训练。
Link Control 2 Register: 0x0001,寄存器定义如下:
Link Control 2 寄存器Target Link Speed (0-3位)可以设置速率。
0000b: 强制2.5GT/s
0001b: 2.5GT/s
0010b: 5.0GT/s
重新设置pcie速率配置上面两个寄存器:
1、修改Link Control 2 Register的低4位,设置速率
2、Link Control Register第5位置1,重新训练速率。
修改pcie配置寄存器可以通过setpci工具,输入命令setpci –dumpregs可以查看pcie配置空间可设置寄存器名称,如下所示:setpci --dumpregs
cap pos w name
00 W VENDOR_ID
02 W DEVICE_ID
04 W COMMAND
06 W STATUS
08 B REVISION
09 B CLASS_PROG
0a W CLASS_DEVICE
0c B CACHE_LINE_SIZE
0d B LATENCY_TIMER
0e B HEADER_TYPE
0f B BIST
10 L BASE_ADDRESS_0
14 L BASE_ADDRESS_1
18 L BASE_ADDRESS_2
1c L BASE_ADDRESS_3
20 L BASE_ADDRESS_4
24 L BASE_ADDRESS_5
28 L CARDBUS_CIS
2c L SUBSYSTEM_VENDOR_ID
2e W SUBSYSTEM_ID
30 L ROM_ADDRESS
3c B INTERRUPT_LINE
3d B INTERRUPT_PIN
3e B MIN_GNT
3f B MAX_LAT
18 B PRIMARY_BUS
19 B SECONDARY_BUS
1a B SUBORDINATE_BUS
1b B SEC_LATENCY_TIMER
1c B IO_BASE
1d B IO_LIMIT
1e W SEC_STATUS
20 W MEMORY_BASE
22 W MEMORY_LIMIT
24 W PREF_MEMORY_BASE
26 W PREF_MEMORY_LIMIT
28 L PREF_BASE_UPPER32
2c L PREF_LIMIT_UPPER32
30 W IO_BASE_UPPER16
32 W IO_LIMIT_UPPER16
38 L BRIDGE_ROM_ADDRESS
3e W BRIDGE_CONTROL
10 L CB_CARDBUS_BASE
14 W CB_CAPABILITIES
16 W CB_SEC_STATUS
18 B CB_BUS_NUMBER
19 B CB_CARDBUS_NUMBER
1a B CB_SUBORDINATE_BUS
1b B CB_CARDBUS_LATENCY
1c L CB_MEMORY_BASE_0
20 L CB_MEMORY_LIMIT_0
24 L CB_MEMORY_BASE_1
28 L CB_MEMORY_LIMIT_1
2c W CB_IO_BASE_0
2e W CB_IO_BASE_0_HI
30 W CB_IO_LIMIT_0
32 W CB_IO_LIMIT_0_HI
34 W CB_IO_BASE_1
36 W CB_IO_BASE_1_HI
38 W CB_IO_LIMIT_1
3a W CB_IO_LIMIT_1_HI
40 W CB_SUBSYSTEM_VENDOR_ID
42 W CB_SUBSYSTEM_ID
44 L CB_LEGACY_MODE_BASE
01 00 - CAP_PM
02 00 - CAP_AGP
03 00 - CAP_VPD
04 00 - CAP_SLOTID
05 00 - CAP_MSI
06 00 - CAP_CHSWP
07 00 - CAP_PCIX
08 00 - CAP_HT
09 00 - CAP_VNDR
0a 00 - CAP_DBG
0b 00 - CAP_CCRC
0c 00 - CAP_HOTPLUG
0d 00 - CAP_SSVID
0e 00 - CAP_AGP3
0f 00 - CAP_SECURE
10 00 - CAP_EXP
11 00 - CAP_MSIX
12 00 - CAP_SATA
13 00 - CAP_AF
0001 00 - ECAP_AER
0002 00 - ECAP_VC
0003 00 - ECAP_DSN
0004 00 - ECAP_PB
0005 00 - ECAP_RCLINK
0006 00 - ECAP_RCILINK
0007 00 - ECAP_RCECOLL
0008 00 - ECAP_MFVC
000a 00 - ECAP_RBCB
000b 00 - ECAP_VNDR
000d 00 - ECAP_ACS
000e 00 - ECAP_ARI
000f 00 - ECAP_ATS
0010 00 - ECAP_SRIOV
其中10 00 - CAP_EXP表示PCIE功能寄存器,其中10是功能ID。用CAP_EXP+偏移就能读写对应功能寄存器。例如读取功能寄存器Link Control(偏移0x10)的值,输入: setpci -s 00:1c.0 CAP_EXP+0x10.w。
如果要重新强制PCIE速率为2.5GT/s,可以输入以下命令:
setpci -s 00:1c.0 CAP_EXP+0x30.b=0x0
setpci -s 00:1c.0 CAP_EXP+0x10.b=0x20
.b:1字节 .w :2个字节 .l: 4个字节
PCIE配置空间设置相关推荐
- 7.PCIE配置空间读写软件
软件-7.PCIE配置空间读写 软件-7.PCIE配置空间读写 软件-7.PCIE配置空间读写 软件读写配置空间 驱动层接口 原理分析 驱动层代码接口 驱动层接口与原理 相关参考 基础知识 raw_p ...
- PCIe配置空间和PCI设备中的寄存器
1.访问PCI配置空间,PCI基本配置空间的读写使用下列函数: 原型定义在<linux/pci.h> int pci_read_config_byte(struct pci_dev *pd ...
- PCIe 配置空间:Status 寄存器
1. Status 寄存器位置 2. Status 寄存器细节 2.1 特殊位 对于 PCIe 设备,status 寄存器中有几个 bit 的值是固定的. Bit 4:Capability List, ...
- linux配置pcie无线网卡,【Linux c】读写pcie配置空间(安装lib库)
readme.txt + pcie.c + in.txt +Makefile 可参考源码是: lspci readme.txt Please open the terminal in your lin ...
- PCIe学习笔记之pcie结构和配置空间
PCIe概述 PCI Express,是计算机总线PCI的一种,它沿用现有的PCI编程概念及通信标准,但建基于更快的串行通信系统. PCIE总线使用的是高速差分总线,并采用端到端的连接方式, 现在的高 ...
- pci配置基地址_PCI/PCIe基础——配置空间
简介 PCI/PCIe设备有自己的独立地址空间,这部分空间会映射到整个系统的地址空间. 映射地址在BIOS/UEFI下指定(如果有的话,对于使用非BIOS启动的OS,不清楚),它有两种类型,一种是MM ...
- PowerPC下PCI、PCI-E设备的配置空间
PCI总线规定访问配置空间的总线事务,称为配置读写事务.不同于存储访问事务使用存储地址访问,而是使用ID号来寻址访问PCI配置空间. PCI设备的ID号由总线号(BUS NUMBER).设备号(DEV ...
- PCIE设备访问及其配置空间
早期的PCI时期,系统为每个PCI设备分配的内存大小仅有256个Bytes.到后来的PCIE时期,随着设备性能增强,PCIE设备的配置空间扩展至4K个Bytes.在这里需要注意: PCIE一共支持25 ...
- PCIe ECAM机制访问PCIE的配置空间
1.PCIe ECAM机制 PCI Express Enhanced Configuration Access Mechanism (ECAM)是访问PCIe配置空间的一种机制.是将PCIe的配置空间 ...
- 初学 PCIe System (一) - PCIe介绍及其配置空间
第二部分在:初学 PCIe System (二) - 如何访问PCIe设备的配置空间 PCI Express 介绍 PCI Express (PCIe) 属于第三代的高效能 I/O 汇流排,PCIe ...
最新文章
- 机器学习/数据挖掘/算法岗位面试题汇总
- 报名|PMCAFF原创专栏作者百人计划
- VTK:直线网格之VisualizeRectilinearGrid
- Android之上下文context
- Python | 浅谈并发锁与死锁问题
- ping端口怎么ping_英雄联盟手游ping信号怎么发送 ping信号发送方法介绍_游戏攻略...
- 关于tomcat的思考
- docker镜像与容器操作流程
- SaaS架构设计之高性能的Multi-Tenant最佳实践
- 利用Java-JACOB操作WORD文档2
- Kubernetes 小白学习笔记(30)--kubernetes云原生应用开发-service mesh介绍
- c语言输入m行m列的二维数组,编写一个函数,用于计算具有n行和m列的二维数组中指定列的平均值以及数组各行的和的最小值。...
- SAP中文件的上传和下载
- Java学习手册:Java面向对象面试问题
- 计算机课题名称怎么取,课题名称:微型计算机操作入门
- 盲盒商城app开发需要具备哪些核心功能,盲盒商城app源码成品分享
- 如何在vm虚拟机里面安装win10操作系统
- fig-tlo_PHP-FIG,Quo Vadis?
- 联合利华营销||轻扬是如何突出重围做到无懈可击的?
- 项目管理 | 如何进行项目风险识别?
热门文章
- python header函数_Header函数
- javascript输入正三角倒三角
- 推荐!十个好用的百度网盘搜索引擎
- 关于网页背景图怎样自动适应屏幕大小
- PHP TP模板下的微博登录(wap)
- C++题目分享之锯木头
- Spring boot出现java.awt.HeadlessException【已解决】
- 人生就像剥洋葱,当你片片剥开,已经满眼泪水| 花一天时间,老机器安装Windows 98
- 主成成分分析(Principal Component Analysis)
- 手机银行告别“鸡肋”