smartvxworks
VxWorks,Linux,QNX,PowerPC,ARM,FPGA,DSP,嵌入式系统架构师,QT UI架构师,项目经理,军工领域耕耘数十载,一起成长,不断进步。
一个优雅的程序员、一个沉稳的架构师。
展开
-
PCIe 设备树详细讲解
为了在通过#INTD支持#INTA的四条IRQ线路上的分配,负载均衡化,每个PCI插槽或设备通常以旋转方式连接到中断控制器上的不同输入,以避免所有#INTA客户端连接到同一条传入中断线路。每个字段的大小是通过取子项的值、父项的值和子项的值来确定的。对于我们示例中的外部总线external-bus,#address-cells = 子地址为 2 个单元格,父地址#address-cells = 为 1 个单元格,大小#size-cells = 也是 1 个单元格。最后要注意的一件事。原创 2022-10-27 09:48:19 · 4402 阅读 · 1 评论 -
PCIe中SR-IOV技术
PCI设备直通时,GuestOS中的设备驱动操作虚拟PCI设备的DMA时,QEMU会将上述操作通过VFIO接口下发给物理PCI设备的DMA,物理设备DMA收到GuestOS中的物理地址GPA,通过IOMMU的映射,找到Host主机物理内存的物理地址HPA,达到物理PCI设备直接访问GuestOS中的GPA,从而达到数据数据面加速。SR-IOV的出现,支持了单个物理PCIe设备虚拟出多个虚拟PCIe设备,然后将虚拟PCIe设备直通到各虚拟机,以实现单个物理PCIe设备支撑多虚拟机的应用场景,如图1.2。原创 2024-08-10 09:27:24 · 95 阅读 · 0 评论 -
【PCIe】PCIe Switch内部数据仲裁机制
上图所示的结构将PCIe总线端口、存储器控制器等一系列与外部设备有关的接口都集成在一起,并统称为RC。RC具有一个或者多个PCIe端口,可以连接各类PCIe设备。PCIe设备包括EP(如网卡、显卡等设备)、Switch和PCIe桥。PCIe总线采用端到端的连接方式,每一个PCIe端口只能连接一个EP,当然PCIe端口也可以连接Switch进行链路扩展。通过Switch扩展出的PCIe链路可以继续挂接EP或者其他Switch。原创 2024-04-09 10:35:57 · 477 阅读 · 0 评论 -
【PCIe硬件】PCIe引脚PRSNT与热插拔
热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。事实上,PCIe“热插拔”的关键目的就是为前面面所提到的系统RAS服务的,是提升系统RAS能力的非常重要的手段!注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的“热插拔”。这里的Hot-Plug,为了方便,我们叫做PCIe热插拔,也就是我们现在及后面将要讨论的内容。原创 2024-03-27 19:45:04 · 899 阅读 · 0 评论 -
【PCIe硬件】PCIe引脚定义
PCI Express,官方简称PCIe,是计算机总线的一个重要分支, 插槽图片如下: 下表列出在边缘连接器上的PCI Express卡两侧的导线。在印刷电路板(PCB)的焊接侧为A侧,并且组件侧的B侧。PRSNT1# 和PRSNT2# 引脚必须比其余稍短,以确保热插入卡时其余管脚完全插入。WAKE# 引脚采用全电压唤醒计算机,但必须拉高从备用电源,以表明该卡是能够唤醒。 PCIe总线是连接外部设备的线路。(就是通用的总线规格)PCIe通道是PCIe总线的组成部分,PCIe原创 2024-03-27 19:27:11 · 2286 阅读 · 0 评论 -
【PCIe的capability扩展空间】AER
下面是PCIe设备端错误记录和报告的详细流程图。原创 2024-03-25 17:49:19 · 293 阅读 · 0 评论 -
【PCIe 链路训练】之均衡(equalization)
这篇文章简单介绍一下PCIE phy的均衡原理和过程,USB phy,ethernet phy这些高速的串行serdes也有相同或者相似的结构。可以不用太关注其中的细节,等到debug的时候可以查询协议,但是需要了解这个故事讲的大概内容。整个equalization过程是controller和phy一起配合完成的,但是均衡器和均衡算法在PHY中。为什么需要equalization和equalization起什么作用不在本篇介绍范围之内。原创 2024-03-08 17:44:35 · 924 阅读 · 0 评论 -
IPoIB在国产并行系统上的实现与优化
IPoIB是一种在InfiniBand网络上支持IP的协议, 使IP 应用程序可以运行在InfiniBand网络上. 我们在国产并行系统上实现了IPoIB, 通过乱序处理、内存拷贝优化、网络参数调优和避免应答延迟的优化手段, 实现了IPoIB在国产并行系统上的性能提升. 实验结果表明, IPoIB在国产并行系统上正确运行, 网络带宽与优化前相比提高近6倍, 与10GbE万兆以太网相比, IPoIB更具优势, 乱序处理机制减少乱序效果明显.原创 2023-12-05 20:14:41 · 269 阅读 · 0 评论 -
【PCIe】链路LTSSM状态机
我们知道,在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练,在这个过程中,就会用LTSSM状态机。LTSSM全称是Link Training and Status State Machine。这个状态机在哪里呢?它就在PCIe总线的物理层之中。我们接下来对这11个状态分别作一个简单的介绍。原创 2023-08-21 10:26:40 · 553 阅读 · 0 评论 -
【PCIe】6: PCIe prefetchable和nonprefetchable
prefetchable可预取指的是CPU可缓存它的内容并且对它做所有类型的优化;可预取性内存是指存储器空间的可预取能力。例如如果读操作没有副作用(即如同从 RAM 中读数据一样不会破坏数据),则称存储器空间可预取。nonprefetchable非预取的内存就像PCIe Agent的寄存器空间映射到CPU内存空间,当读写这些寄存器时,会导致寄存器状态发生改变(例如设备的中断状态寄存器只要一读取,便自动清零),那么CPU就不可缓存这些内存空间;原创 2023-06-27 10:15:04 · 1508 阅读 · 0 评论 -
【PCIe】5: PCIe DBI (Date Bus Interface)
包括 PICE叫做的配置寄存器(比如PCIE 从机显示的标准设置头信息)和 厂家定义的寄存器(比如ATU和DMA等)。对于PCIE 的EP和RC 他们的排布是有一定差异的。右边的CS2=0和CS2=0有不同的访问区域,如果是设置CDM/ELBI 为1 的情况,访问的是特殊的寄存器Shadow(比较特殊的寄存器,算是IP厂家特殊的);Shadow Registers:PCI头部的一些设置是在Shadow寄存器中设置,比如BAR的MASK,前面介绍是在DBI2地址范围。1.右边是DBI2访问的空间内容。原创 2023-06-27 10:11:09 · 1299 阅读 · 0 评论 -
【PCIe】4: PCIe Header配置空间
对于 PCIe 设备,该寄存器的值无意义,因为 PCIe 设备在进行数 据传送时,在其报文中含有一次数据传送的大小,PCIe 总线控制器可以使用这个“大小”, 判断数据区域与 Cache 行的对应关系。在 PCI 设备中,该寄存器是可选的,但是在 PCI-X 和 PCIe 设备中必须支持这个寄存 器,Capabilities Pointer 寄存器存放 Capabilities 寄存器组的基地址,PCI 设备使用 Capabilities 寄存器组存放一些与 PCI 设备相关的扩展配置信息。原创 2023-06-26 10:41:06 · 583 阅读 · 0 评论 -
【PCIe】3: PCIe BDF(Bus,Device,Function)
PCIe总线中的每一个功能都有一个唯一的标识符与之对应。这个标识符就是BDF(Bus,Device,Function)原创 2023-06-26 10:23:04 · 1226 阅读 · 0 评论 -
【PCIe】2: PCIe TLB事务层详解过程
Non-posted(非转发)事务和Posted(转发)事务都是PCIE TLP(事务层包)类型。Non-posted事务分为两个部分,首先是发送端向接收端发送TLP请求,接收端接收到请求完成后向发送端发送完成(Completion)TLP。包含:发送--接收--反馈三个过程。Non-posted事务必须等待接收到完成TLP,PCIE总线才能结束当前的TLP。如果需要对方响应的,我们叫做Non-Posted的TLP;如果不期望对方给响应的,我们称之为Posted TLP。原创 2023-06-01 14:35:39 · 646 阅读 · 0 评论 -
【PCIe】1: PCIe 硬件时序初始化过程
PCIE3.1a相对于PCIE3.0增加了L1SS功能,CLKREQ#用来进入和退出L1.1/L1.;CLKREQ0和CLKREQ1应该下拉以便允许时钟缓冲输出,对于功耗要求不严格的应用,时钟可以永久接到低电平,永久是能时钟输出。原创 2023-06-01 10:00:10 · 2451 阅读 · 2 评论 -
【PCIe】Linux下PCIe驱动开发与学习
PCI Express,是计算机总线PCI的一种,它沿用现有的PCI编程概念及通信标准,但建基于更快的串行通信系统。PCIE总线使用的是高速差分总线,并采用端到端的连接方式, 现在的高速总线基本上都是串行总线,这样可以使用更高的时钟频率。PCIe 版本编码传输速率(GT/S)x4吞吐量(MB/s)1.08b/10b2.512.08b/10b523.0128b/130b8~44.0128b/130b16~85.0128b/130b32~16。原创 2021-01-21 13:22:36 · 11352 阅读 · 0 评论 -
Linux PCIe驱动框架分析(第一章)
PCI/PCIe总线硬件;Linux PCI驱动核心框架;Linux PCI Host控制器驱动;不排除会包含PCIe外设驱动模块,一切随缘。作为专题的第一篇,当然会先从硬件总线入手。进入主题前,先讲点背景知识。第一代总线包含ISA、EISA、VESA和等;第二代总线包含PCI、AGP、PCI-X等;第三代总线包含PCIe、mPCIe、m.2等;原创 2022-11-04 09:09:38 · 4056 阅读 · 0 评论 -
Linux PCIe驱动框架分析(第二章)
本文将分析Linux PCI子系统的框架,主要围绕Linux PCI子系统的初始化以及枚举过程分析;如果对具体的硬件缺乏了解,建议先阅读上篇文章《Linux PCI驱动框架分析(一)》;话不多说,直接开始。原创 2022-11-04 09:21:37 · 1364 阅读 · 0 评论 -
Linux PCIe驱动框架分析(第三章)
本文将讲PCIe Host的驱动,对应为部分,相当于PCI的部分;本文会选择Xilinx的nwl-pcie来进行分析;驱动的编写整体偏简单,往现有的框架上套就可以了,因此不会花太多笔墨,点到为止;PCIe控制器驱动,各家的IP实现不一样,驱动的差异可能会很大,单独分析一个驱动毕竟只是个例,应该去掌握背后的通用框架;各类驱动,大体都是硬件初始化配置,资源申请注册,核心是处理与硬件的交互(一般就是中断的处理),如果需要用户来交互的,则还需要注册设备文件,实现一堆操作函数集;原创 2022-11-04 09:25:07 · 2651 阅读 · 2 评论 -
PCIe Dma coherent
HOST主桥与主存存储器来同一级内部高速总线上,方便PCI设备通过HOST主桥访问主存储器,即进行DMA操作。值得注意的是,PCI设备的DMA操作需要处理器系统的Cache进行一致性操作。当PCI设备通过HOST主桥访问主存储器时,Cache一致性模块将进行地址监听,并根据监听结果改变Cache状态。Linux对cache一致性有两种管理方式:1. mem 硬件上uncache 2. 使用过程中,通过flush cache 保证data 一致性。原创 2022-12-12 11:43:56 · 1140 阅读 · 0 评论 -
PCI Header配置空间详解
PCI 桥可以管理其下的 PCI 总线子树。值得注意的是,该寄存器由系统软件设置,但是在 PCI 设备的运行过程中,只有其硬件逻辑才会使用该寄存器,比如 PCI 设备的硬件逻辑需要得知处理器系统 Cache 行的大小,才能进行存储器写并无效总线事务,单行读和多行读总线事务。PCI 总线的电气特性决定了在一条 PCI 总线上挂接的负载有限,当 PCI 总线需要连接多个 PCI 设备时,需要使用 PCI 桥进行总线扩展,扩展出的 PCI 总线可以连接其他 PCI 设备,包括 PCI 桥。原创 2022-12-10 11:09:59 · 1376 阅读 · 0 评论 -
PCIE 调试过程记录
应用层调试方法,config space配置、memap空间的理解Pcie控制器的配置、使用从实际调试PCIE设备的过程看,设备调试和使用主要涉及到两个方面:config space和MMIO space。配置空间主要是用于配置PCIE设备。很多PCI设备仅仅支持64字节的配置空间。PCI和PCIe配置空间的区别如下:PCI/PCI-X和PCIe设备还扩展了0x40和0xFF这段配置空间,这段空间主要存放一些与MSI或者MSI-X 中断机制相关的Capability结构。......翻译 2022-08-18 14:02:07 · 2467 阅读 · 1 评论 -
pcie inbound和outbound关系
1)首先,RC端须要配置outbound(一般内核中配好),EP端须要inbound(0x5b000000inbound到BAR2),这样就建立了RC端0x20100000(BAR2)到EP端0x5b000000的映射。RC訪问EPRC存储器域->outbound->RCPCI域->EPPCI域->inbound->EP存储器域。EP訪问RCEP存储器域->outbound->EPPCI域->RCPCI域->inbound->RC存储器域。InboundPCI域訪问存储器域。...原创 2022-08-01 10:15:18 · 3092 阅读 · 0 评论