1.文章坚持实际工作中有所帮助---实际工作中遇到问题可查阅。
2.章节内容规划具有连贯性。lspci-setpci-PCIe Configuration Space--next。
3.文章以文字和视频形式发布,建议大家视频和文章结合查阅。
4.视频发布:公众号、B站、抖音,搜寻“芯塾科技”可观看。
5.文章发布: 公众号、CSDN、知乎、B站,搜寻“芯塾科技”可浏览。
1.Q1:什么是
2.PCIe配置空间是 PCI/PCIe 设备的一组标准化寄存器,用于存储设备的硬件信息、资源需求和功能配置。
3.PCIe配置空间是PCI/PCIe 设备与系统(如操作系统或 BIOS)之间交互的核心机制,支持设备的发现、资源分配和功能控制等。
4.Q2:PCIe配置空间结构?
5.PCIe配置空间为4KB大小,采用链表管理。
本文解析PCIe配置空间的结构,从PCI到PCIe的演变。
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格式
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分配。
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字节是标准化的,其余的则是与设备相关的。
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结构。
1.PCIe 在 PCI 兼容配置空间(前 256 字节)中定义了PCIe Capability Register。
2.PCIe设备需要支持PCIe Capability Register。
3.PCIe Capability Register结构。
4.PCIe Capability ID。
PCIe Extended Capability Space
1.PCIe扩展能力寄存器位于设备配置空间的0x100到0xfff字段,以链表形式管理。
2.PCIe扩展能力寄存器格式。
3.PCe扩展能力寄存器16位ID由PCI-SIG分配。
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站/公众号/抖音,可搜索"芯塾科技"观看
通信工程专业毕业,7年开发经验
精通c/c++
精通golang
熟悉常见的脚本,js,lua,python,php
熟悉电路基础,嵌入式,单片机
服务端开发
嵌入式开发
>gin接口代码CURD生成工具
sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。
qt .ui文件转css文件
duilib xml 自动生成绑定控件代码
协议调试器
基于lua虚拟机的的协议调试器软件 支持的协议有:
串口
tcp客户端/服务端
udp 组播/udp节点
tcp websocket 客户端/服务端
软件界面
使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上
下载地址和源码
webrtc easy demo
webrtc c++ native 库 demo 实现功能:
基于QT
webrtc摄像头/桌面捕获功能
opengl渲染/多播放窗格管理
janus meeting room
下载地址和源码
wifi,蓝牙 - 无线开关
实现功能:
通过wifi/蓝牙实现远程开关电器或者其他电子设备
电路原理图:
实物图:
深度学习验证工具
虚拟示波器
硬件实物图:
实现原理
基本性能
采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS
上位机实现功能: 采集,显示波形,存储wave文件。
参数可运行时配置
上位机:
显示缓冲区大小可调
刷新率可调节
触发显示刷新可调节
又一个modbus调试工具
最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:
1. 基于QT5
2. 基于libmodbus
3. 三方库完全跨平台,linux/windows。
开源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
版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型