PCIe实践之路
文章平均质量分 87
从PCIe协议到实现,到应用,一起聊一聊
叶玄青
我是谁
展开
-
PCIe实践之路:PCIe转USB Host驱动
大话PCIe:调试实战本次调试PCIe RC驱动,通过PCIe转USB芯片扩展出的USB口接入U盘。RC平台为ARM-A7,运行裸机环境,EP为一款PCIe转USB3.0芯片,提供PCIe gen2 1X物理接口,接到4X插槽上。一、芯片选型PCIe转USB3.0芯片为vl805,网上没有找到datasheet,驱动只有windows下的,但是通过官网信息判断有linux支持,所以...原创 2018-05-18 23:26:22 · 21357 阅读 · 5 评论 -
PCIe实践之路:Linux RC驱动
最新的4.12内核中对pci host driver进行一些划分,把基于designware IP的主控驱动放到drivers/pci/dwc目录下去了。如果是基于老的kernel开发,想要移植新版的内核的话,要注意,同时多了designware ep驱动框架。非designware的主控驱动还是位于host目录下,譬如pcie-xilinx.c。下面就以xilinx pcie主控驱动为例来介绍如何原创 2017-09-17 13:42:23 · 9244 阅读 · 0 评论 -
PCIe实践之路:Linux访问PCIe空间
Linux在枚举PCIe设备的过程由内核中的PCI框架负责,在EP配置完成之后,驱动通过以下接口访问PCIe空间,原理参考前文《大话PCIe:设备枚举》一、访问配置空间相关接口位于drivers/pci/access.c1.1 读配置空间pci_read_config_byte(const struct pci_dev *dev, int where, u8 *val);pci_read_con原创 2017-09-03 20:32:16 · 17531 阅读 · 1 评论 -
PCIe实践之路:DMA机制
PCIe控制器也提供DMA(Direct Memory access)功能,用来批量地异步数据传输。一、PCIe中的DMA读和写假设现在原创 2017-07-28 20:47:05 · 47854 阅读 · 0 评论 -
PCIe实践之路:设备枚举
人的一生是一个不断认识自我,发展自我的过程。认识PCIe设备的枚举过程需要以下知识:拓扑结构设备的表征及配置空间的访问BAR空间的含义和访问其中第1/2点在总线结构与配置空间已经介绍过了,第3点在BAR空间和TLP也已经进行过详细的介绍,可以说是万事具备。接下来涉及的过程有以下几个:根据深度优先搜索进行设备总线号的分配BAR空间的映射和简单访问测试上面就是枚举过程中做的事情了。一、基原创 2017-07-08 22:46:17 · 22445 阅读 · 8 评论 -
PCIe实践之路:BAR空间和TLP
上一篇文章中写到每个PCIe的function都有自己的configuration space,其实就是配置寄存器了(这个当然是要有的了,不然软件要怎么玩?只不过PCIe的配置寄存器要通过tlp才能去访问)。其实PCIe设备是有自己独立的一套内部空间,不仅仅是配置空间,包括每个设备提供哪些I/O地址,memory地址。而BAR(Base Address Register)就是用来表征这些地址空间的。原创 2017-07-02 20:28:40 · 48605 阅读 · 2 评论 -
PCIe实践之路:总线结构与配置空间
把有限的精力花在真正有价值的事情上。一、网络拓扑与设备端口上一篇已经讲到构成PCIe网络的三个角色:RC、SW和EP。其实这整个网络给人感觉就像乐高积木,上一级设备的下游端口接下级设备的上游端口,然后端口不但能看出链接状态,还提供包传输的链路。这里有两个常见的概念:DSP(Down Stream Port)和USP(Upper Stream Port)。对每个功能设备来讲,用来连接上下游设备的端口原创 2017-06-30 00:41:27 · 15833 阅读 · 4 评论 -
PCIe实践之路: 发展与应用
介绍PCIe的基本概念,用途。一、串行总线PCIe作为串行总线的一种,它的发展必然和另一种总线架构密不可分:并行总线。早先,人们普遍认为提高数据位宽就能提高数据传输速率,这是谁都会想到的问题,早期的总线确实是这样设计的。但是随着工作频率的提升,并行数据线的串扰变得越来越严重,而串行总线采用差分对来传输信号,可以很好的抵消串扰。所以现在越来越多的设备,特别是高速设备(譬如usb),都基于差分串行总线原创 2017-06-28 23:29:29 · 8533 阅读 · 1 评论