当前位置: 首页 > news >正文

PCIe 资料收集2

文章目录

        • 感官认识
        • PCIe的存储空间
        • PCIe 在 linux 下的驱动
        • PCIe 验证
            • 1.PCIe 传递裸数据
            • 2.PCIe 转其他设备
        • PCIe转其他总线
            • RS232
            • USB
        • 从用户空间理解PCIe

感官认识

  • 总线协议接口 视频介绍
  • PCIe 视频介绍及PCIe文字介绍
PCIe上可以接各种控制器硬盘控制器+硬盘声卡控制器+音响咪头/耳机显卡USB控制器RS232

PCIe的存储空间

https://zhuanlan.zhihu.com/p/612366598
https://blog.csdn.net/yeiris/article/details/126633678
https://blog.csdn.net/yeiris/article/details/126694729
  • PCIe 控制器寄存器所在地址
	Memory Address Space访问方式:MMIO
  • PCIe 插槽上插入的设备的信息所在地址
	访问方式: 不同的 PCIe控制器对应的 驱动 中定义的 struct pci_ops 中的 read 和 write对于pci-j721e.c 来说 , 	是 readl 	和 writel对于x86相关的pcie来说? 	是 inl      和 outlConfiguration Address Space的大小为:256 Bytes/function x 8 functions/device x 32 devices/bus x 256 buses/system = 16MB。每个 function(256字节) 的空间分布每一个PCI功能(Function)都包含256个字节的配置空间(Configuration Space)前64个字节被称为HeaderPCI Spec规定了两种类型的Header:Type1 和 Type0Type0 Header表示该PCI设备功能  	不是桥Type1 Header表示该PCI设备功能      是桥(Bridge)后192个字节用于 function-specific
  • PCIe 插槽上插入的设备上的寄存器空间
BAR存储了大小和属性BAR寄存器在PCIe配置空间里面,一个PCIe设备
可能有若干个内部空间(最多6)需要映射到主机memory地址空间,
设备出厂时,这些空间的大小和属性都写在

在这里插入图片描述

PCIe 在 linux 下的驱动

  • 【原创】Linux PCI驱动框架分析(一)

  • 【原创】Linux PCI驱动框架分析(二)

  • 【原创】Linux PCI驱动框架分析(三)

  • PCIe 专栏1

PCIe 验证

  • PCIe 2.0 验证
  • PCIe 与 AMBA 兼容
  • PCIe 总线
1.PCIe 传递裸数据

2.PCIe 转其他设备
如果转 xhci(USB3.0)
如果PCIe已经处理好BAR,那么在软件上
只需要 处理 xhci 的寄存器空间即可?

PCIe转其他总线

RS232
  • CH382
  • 代码
USB
  • VL805

  • VL805裸机

  • μPD720202K8

从用户空间理解PCIe

# lspci
00:00.0 PCI bridge: Texas Instruments Device b01000:00.0 表示含义为 <bus number>:<device number>.<function number>bus number 		: 8bits 最多连接到 		256 	个bus
device number	: 6bits 最多连接到 		32	 	种装置
function number : 3bits 最多每种装置有 	8 		种功能
0100: 1000:0056 表示含义为 Class ID: Vendor ID Device ID

参数说明

查看所有pci设备
lspci
查看指定的pci设备信息(VID&PID)
lspci -s 02:03.0 -n
查看指定的pci设备信息(64)
lspci -s 02:03.0 -x
查看指定的pci设备信息(256)
lspci -s 02:03.0 -xxx
查看指定的pci设备信息(4096)
lspci -s 02:03.0 -xxxx
http://www.lryc.cn/news/39312.html

相关文章:

  • Linux网络编程(使用VScode远程登录ubuntu)
  • 如何提高项目估算精准度?关键看5大影响因子
  • 论文阅读笔记《Nctr: Neighborhood Consensus Transformer for Feature Matching》
  • 上位机系统Ubuntu 20.04与下位机arduino UNO通讯
  • hive面试题
  • 【CUDA】《CUDA编程:基础与实践》CUDA加速的关键因素
  • 数据结构【Golang实现】(四)——双向循环链表
  • 【Redis】高可用架构之哨兵模式 - Sentinel
  • 图片的美白与美化
  • 面试官:关于CPU你了解多少?
  • UI自动化测试-Selenium的使用
  • 嵌入式学习笔记——STM32的USART相关寄存器介绍及其配置
  • Android setContentView流程分析(一)
  • doris数据库操作数字遇到的问题
  • 3.13文件的IO操作
  • ffmpeg使用
  • spark中的并行度(分区数)/分区器如何确定
  • 00后女生“云摆摊”两周赚1.5万,实体店转战线上真的能赚钱吗?
  • 华为OD机试题 - 最优资源分配(JavaScript)| 机考必刷
  • 利用python判断字符串是否为回文
  • GDB 调用之ptype、set variable
  • 并发编程---阻塞队列(五)
  • 本科课程【计算机组成原理】实验1 - 输出ABCD程序的生成
  • Java并发编程(2) —— 线程创建的方式与原理
  • 你写的js性能有多差你知道吗 | js性能优化
  • 线程的状态、状态之间的相互转换
  • Java8使用Lambda表达式(流式)快速实现List转map 、分组、过滤等操作
  • C++之深浅拷贝
  • CoreLocation的一切
  • HashMap原理