最新文�? Serdes系统中CTLE技术的介绍 高速通信系统中的均衡技术 DRAM接口的最新演进梳理---DDR5_LPDDR5_GDDR6 高性能微处理器的电源传输网络—挑战、解决方案及未来趋势 高速串行链路中PAM4信号设计的考量因素
PCIe_配置空间结构深度解析 历史版本:
上次修改时间:

转载自

1.PCIe每日一问简介

1.文章坚持实际工作中有所帮助---实际工作中遇到问题可查阅。

2.章节内容规划具有连贯性。lspci-setpci-PCIe Configuration Space--next。

3.文章以文字和视频形式发布,建议大家视频和文章结合查阅。

4.视频发布:公众号、B站、抖音,搜寻“芯塾科技”可观看。

5.文章发布: 公众号、CSDN、知乎、B站,搜寻“芯塾科技”可浏览。

2.PCIe 配置空间结构深度解析

1.Q1:什么是

PCIe配置空间

2.PCIe配置空间是 PCI/PCIe 设备的一组标准化寄存器,用于存储设备的硬件信息、资源需求和功能配置。

3.PCIe配置空间是PCI/PCIe 设备与系统(如操作系统或 BIOS)之间交互的核心机制,支持设备的发现、资源分配和功能控制等。

4.Q2:PCIe配置空间结构?

5.PCIe配置空间为4KB大小,采用链表管理。

本文解析PCIe配置空间的结构,从PCI到PCIe的演变。

3.

PCI Configuration Space Header

1.PCI协议规定64字节为PCI Configuration Space Header, 结构如下图所示。

2.PCI Configuration Space Header 前16字节定义都是一样, 对于所有PCI设备。

3.PCI Configuration Space Header 后48字节(10h-3fh),根据设备类型(端点设备、桥设备、根复合体等), 存在Type 0(端点设备)和 Type 1(桥设备)两种格式。

4.PCI Configuration Space Header 后48字节,存在Type 0/ Type 1格式通过PCI Configuration Space Header “header Type Register(0eh)”寄存器指示。

5.Type0/Type1格式

4.

PCI Capability Space

1.PCI Configuration Space Header(前 64 字节)仅支持固定功能,无法满足不断扩展的需求(如电源管理、MSI中断等)。

2.PCI 2.1 标准引入能力寄存器,允许设备在配置空间中动态声明支持的可选功能。

3.PCI能力寄存器通过链表管理,每个能力结构包含一个能力ID和一个指向下一个能力结构的指针。

4.PCI Configuration Space Header “Capability Pointer”寄存器指向能力寄存器的起始位置。

5.PCI能力寄存器8位ID由PCI-SIG分配。

5.PCI Configuration Space

1.PCI配置空间由PCI Configuration Space Header和PCI Capability Space构成。

2.PCI配置空间大小为256 Byte,配置寄存器的布局是标准化的,64 Byte PCI Configuration Space Header,192 Byte PCI Capability Space。

3.PCI设备256Byte配置空间,前64字节是标准化的,其余的则是与设备相关的。

6.PCIe Configuration Space

1.PCIe配置空间为4096 Byte(4KB空间),PCI配置空间为256 Byte。

2.PCIe Configuration Space分为 PCI 兼容区域<256 Byte>、 PCIe 扩展配置空间。

3.PCIe在PCI Capability 新增PCIe Capability寄存器。

4.PCIe Configuration Space结构。

7.

PCIe Capability Register

1.PCIe 在 PCI 兼容配置空间(前 256 字节)中定义了PCIe Capability Register。

2.PCIe设备需要支持PCIe Capability Register。

3.PCIe Capability Register结构。

4.PCIe Capability ID。

8.

PCIe Extended Capability Space

1.PCIe扩展能力寄存器位于设备配置空间的0x100到0xfff字段,以链表形式管理。

2.PCIe扩展能力寄存器格式。

3.PCe扩展能力寄存器16位ID由PCI-SIG分配。

9.Summary

1.PCI Configuration Space Header

2.PCI Capability Space

3.PCI Configuration Space

5.PCIe Capability Register

5.PCIe Extended Capability Space

6.PCIe Configuration Space



文章坚持-工作中查阅可解决实际问题

您的点赞-收藏-转发-评论是我们坚持原创的动力

欢迎关注微信公众号"芯塾科技"

视频发布平台:B站/公众号/抖音,可搜索"芯塾科技"观看


https://zhuanlan.zhihu.com/p/1907684060949648931

0条评�?
全部评论

关于博主

an actually real engineer

通信工程专业毕业,7年开发经验

技术栈:

精通c/c++

精通golang

熟悉常见的脚本,js,lua,python,php

熟悉电路基础,嵌入式,单片机

耕耘领域:

服务端开发

嵌入式开发

git

>

gin接口代码CURD生成工具

sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。

输入ddl:
输出代码:

qt .ui文件转css文件

duilib xml 自动生成绑定控件代码

协议调试器

基于lua虚拟机的的协议调试器软件 支持的协议有:

串口

tcp客户端/服务端

udp 组播/udp节点

tcp websocket 客户端/服务端

软件界面

使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上

下载地址和源码

duilib版本源码 qt qml版本源码 二进制包

webrtc easy demo

webrtc c++ native 库 demo 实现功能:

基于QT

webrtc摄像头/桌面捕获功能

opengl渲染/多播放窗格管理

janus meeting room

下载地址和源码

源码 二进制包

wifi,蓝牙 - 无线开关

实现功能:

通过wifi/蓝牙实现远程开关电器或者其他电子设备

电路原理图:

实物图:

深度学习验证工具

vtk+pcl 点云编辑工具

实现功能:

1. 点云文件加载显示(.pcd obj stl)

2. 点云重建

3. 点云三角化

4. 点云缩放

下载地址:

源码 二进制包

虚拟示波器

硬件实物图:

实现原理

基本性能

采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS

上位机实现功能: 采集,显示波形,存储wave文件。

参数可运行时配置

上位机:

显示缓冲区大小可调

刷新率可调节

触发显示刷新可调节

进程守护工具

基本功能:

1. 守护进程,被守护程序崩溃后自动重启。

2. 进程输出获取,显示在编辑框中。

二进制包

openblt 烧录工具

基本功能:

1. 加载openblt 文件,下载到具有openblt bootloader 运行的单片机中。

二进制包

opencv 功能验证工具(开源项目二次开发)

基本功能:

1. 插件化图像处理流程,支持自定义图像处理流程。 2. 完善的日志和权限管理

二进制包

又一个modbus调试工具

最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:

1. 基于QT5

2. 基于libmodbus

3. 三方库完全跨平台,linux/windows。

二进制包

屏幕录制工具

1. 基于QT5

2. 基于ffmpeg

3. 支持自定义录屏

源代码

开源plutosdr 板卡

1. 完全开源

2. 提高固件定制服务

3. 硬件售价450 手焊产量有线

测试数据

内部DDS回环测试

接收测试

外部发送500MHZ FM波形

硬件原理图

matlab测试

2TRX版本

大部分plutosdr应用场景都是讲plutosdr板卡作为射频收发器来使用。
实际上plutosdr板卡本身运行linux 操作系统。是具有一定脱机运算的能力。 对于一些微型频谱检测,简单射频信号收发等应用完全可以将应用层直接实现在板卡上
相较于通过网卡或者USB口传输具有更稳定,带宽更高等优点。
本开源板卡由于了SD卡启动,较原版pluto支持了自定义启动应用的功能。
提供了应用层开发SDK(编译器,buildroot文件系统)。
通过usb连接电脑,经过RNDIS驱动可以近似为通过网卡连接
(支持固件的开发定制)。

二次开发例子

``` all:
arm-linux-gnueabihf-gcc -mfloat-abi=hard --sysroot=/root/v0.32_2trx/buildroot/output/staging -std=gnu99 -g -o pluto_stream ad9361-iiostream.c -lpthread -liio -lm -Wall -Wextra -lrt
clean:
rm pluto_stream

bsdiff算法补丁生成器

1. 官方bsdiff算法例子自带bzip压缩方式

2. 本例子没有压缩,直接生成补丁文件

3. 图形化界面基于DUILIB

二进制文件

版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型

Base64 Image

. 闽ICP备19002644号