PCI-Express
文章平均质量分 93
笃行笔记
这个作者很懒,什么都没留下…
展开
-
AMD IOMMU与Linux (4) -- Domain, Group, Device
1.domain的本质是一个页表,1对1的关系,2.IOMMU_DOMAIN_UNMANAGED vs.IOMMU_DOMAIN_DMA a. IOMMU_DOMAIN_UNMANAGED - DMA mappings managed by IOMMU-API user, usedfor VMs b. IOMMU_DOMAIN_DMA - Internally used for DMA-API implementations. This flag a...原创 2022-01-10 10:13:51 · 2871 阅读 · 1 评论 -
USB/PCIE/ROOT COMPLEX & Windows/Linux Driver
好久没有写了总结一下工作多年所涉及的内容:1. USB Device: USB1.1, USB2.0, USB3.0, USB3.12. USB Host: xHCI3. PCIe: EP, Switch, Root Complex4. IOMMU5. APIC: IO-APIC, Local APIC软件(驱动)层面:1. Windows AVStream/BDA driver -- USB/PCI PCTV case (WHQL passed)2. Window.原创 2020-06-06 09:55:34 · 1204 阅读 · 0 评论 -
PCIe学习笔记(32)--- PL - Link initialization and training (1)
chapter 14: link initialization and trainingPCIe将LTSSM归到了PHYSICAL LAYERSS/SSP USB将LTSSM归到了LINK LAYERLTSSM: LINK TRAINING STATUS SMGEN 3使用EIEOS来做SYMBOL LOCK (*)LANE REVERS原创 2017-08-01 16:21:17 · 5703 阅读 · 0 评论 -
PCIe学习笔记(31)--- PL-Logical (Gen 1 and Gen 2) --- (3)
Rx clock: data bit transitionsLocal clockdifferent between, compensation neededLink training: TS1/2, bit locklow power state, such as L0s, or L1, lose synchronization.transmitter sends a原创 2017-08-01 15:04:57 · 1697 阅读 · 0 评论 -
PCIe学习笔记(24)--- PL-Logical (Gen 1 and Gen 2) --- (1)
对应Chapter 11: Physical layer- logical (Gen 1 and Gen2)TX: D-DATA/K-CONTROL: Gen1/2是区分D/K symbol的,所以有D/K# bitGen3没有K symbol, 128 bit (16 bytes) data block中, 有2 bit的SYNC HEADER, 其中包含的信息,让REC原创 2017-07-27 11:51:25 · 2111 阅读 · 0 评论 -
PCIe学习笔记(35)--- TL (1)
chapter 5: tlp elements (details of tlp)chapter 6: flow control___________________________________digest (end to end CRC, ECRC)HDR + DATA + DIGEST = TLPseq num + TLP + CRC : DLLS原创 2017-08-07 17:15:03 · 1432 阅读 · 0 评论 -
第二十七篇:Windows驱动中的PCI, DMA, ISR, DPC, ScatterGater, MapRegsiter, CommonBuffer, ConfigSpace
最近有些人问我PCI设备驱动的问题, 和他们交流过后, 我建议他们先看一看>这本书, 个人感觉, 这本书写得非常连贯流畅.PCI设备驱动基本包括了PCI的资源获取, 配置空间的读写, 中断的处理, 中断后半部在DPC中的处理.同时, 也必须了解DMA, ScatterGater, MapRegister, Common Buffer等基础.1.1 PCI设备资源获取原创 2014-07-13 22:17:51 · 3562 阅读 · 0 评论 -
第三十一篇:!pci of WinDbg
刚刚在看WinDbg在硬件调试方面有哪些扩展命令的时候,让我回想起一个工作中的实际事务。在xHCI USB3.0/3.1 IP项目开发过程中,需要得到类似实际产品的PCIe配置空间信息,以作对比参考。当时的做法是,将类似产品的xHCI host controller通过PCIe口接到SoC系统中, 通过编写ARM SoC的Bare metal代码来读取每一个产口的PCIe配置空间。原创 2014-12-18 17:22:33 · 3848 阅读 · 0 评论 -
PCIe学习笔记(1)---PCI相关
1. PCI 设备有REQ#与GNT#这组信号,REQ#用来向仲裁单元申请总线资源,GNT#被仲裁单元授权总线资源原创 2017-03-03 15:50:11 · 4688 阅读 · 0 评论 -
PCIe学习笔记(33)--- PL - Link register
Link capability register:Max link speed (supported link speeds vector field bit x)max link width (x1 ... x32)link capability 2 register:supportd link speeds vecotrlink status registe原创 2017-08-01 16:59:40 · 4597 阅读 · 0 评论 -
PCIe学习笔记(34)--- DLL (1)
fixed size of 8 bytes (SDP/END + 6 bytes / SDP*2 + 6 bytes: DLLP type 1B + 3B + 2B CRC)no target or routing informationDLLPs not subject to flow controlDLLPs no acknowledgement (time-out mec原创 2017-08-02 15:11:25 · 629 阅读 · 0 评论 -
PCIe学习笔记(23)--- 中断(4)--- 同步问题
存在这样一种现象:设备往系统MEMORY中写数据,“认为”该笔数据写完之后,触发中断中断函数处理该笔数据,但事实上,系统MEMORY中的数据,可能是STALE的导致该问题的原因,第一,写数据是POST的第二,写的过程可能会被DELAY第三,一旦有DELAY,就可能导致中断先于数据写先到方法一:dummy read在ISR中加一个device re原创 2017-07-17 10:45:35 · 1326 阅读 · 0 评论 -
PCIe Summary
到目前为止,一共作了23个PCIe的学习笔记学习的书本是:MindShare_PCIe30_eBook_v1.0.pdf已经学习,并作了笔记的章节是:Part One: The big pictureChapter 1: BackgroundChapter 2: PCIe architecture overviewChapter 3: Con原创 2017-07-27 10:40:05 · 811 阅读 · 1 评论 -
PCIe学习笔记(25)--- PL-Logical (Gen 1 and Gen 2) --- (2)
TX:DLL往PL送DATA CHARACTER,伴随着其它的几个工作单元:1. K SYMBOLTLP, DLLP需要一个START, 一个ENDSTP, END(EDB)SDP, END其它的K SYMBOL包括: COM, PAD, SKP, STP, SDP, END, EBD, FTS, IDL, EIE2. OSTS1/2SKIP O原创 2017-07-27 15:33:27 · 1657 阅读 · 0 评论 -
PCIe学习笔记(26)--- PL - Electrical -- (1)
对应章节Chapter 13 physical layer electricallink training是以2.5G开始的一个设备如果支持8G,必须支持2.5G,但非必须支持5GL0 full-on state差分电路中,保持DC common mode voltage如果进了electrical idle则会低于一个threshold value原创 2017-07-27 17:18:54 · 2312 阅读 · 0 评论 -
PCIe学习笔记(28)--- PL - Electrical -- (3)
Rx SpecsTransmission Loss:TX Vdiff p-p min = 800RX Vdiff p-p = 17513.2dB___________________________________Signal compensation:TX equalization: de-emphasis (two-tap T原创 2017-07-28 14:30:40 · 2326 阅读 · 0 评论 -
PCIe学习笔记(29)--- PL - Electrical -- (4)
Jitteredge arrives before or after its ideal timejitter分类un-correlated-jitter 与被传输的数据不相关Rj - Random jitter 不可被预测的,无限的,服从高斯分布,一般由电气或者热噪声引入系统Dj - Deterministic jitter 可被预测的,有限的,一般由EMI, CRO原创 2017-07-28 17:02:42 · 823 阅读 · 0 评论 -
PCIe学习笔记(30)--- PL - Electrical -- (5)
Rx equalizationCTLE = Continuous -time linear equalizationDFE = Decision feedback equalization原创 2017-07-28 17:22:09 · 1244 阅读 · 0 评论 -
驱动人生
2018-2019两年时间参与了以下项目PCIe Switch Management SW:Windows KMDF driver Linux kernel driver (包括 NTB kernel driver) Application tool其中,Windows KMDF driver 部分,取得了微软认证 Linux kernel driver (包括 NT...原创 2019-07-14 14:05:20 · 759 阅读 · 4 评论 -
PCIe学习笔记(2)---PCI-x相关
1.PCI-X向前硬件,软件兼容PCI,所以设备驱动,操作系统,应用程序都兼容PCI-X设备可以插入PCI的插槽,反则亦然2. (不是很理解)PCI到PCI-X增加了速度第一,增加实现(IMPLEMENT)了PLL,允许输出早一点,输入采样晚一点,第二,PCI-X的输入的目标设备管脚锁存,缩短了建立时间以上两点,从而允许了信号在总线上传播的时间,以及更高的时钟频原创 2017-03-05 20:51:58 · 6221 阅读 · 0 评论 -
PCIe学习笔记(3)---PCIe初步
1. PCIe有LINK的概念LINK可以有,1,2,4,8,12,16,32条LANE一条LANE是由一个TRANSMITTER,一个RECEIVER构成2.PCIe软件兼容PCI/PCI-X3.PCI/PCI-X的问题一, FLIGHT TIME二, CLOCK SKEW三, SIGNAL SKEWPCIe解决以上三个问题原创 2017-03-06 14:31:01 · 7586 阅读 · 0 评论 -
PCIe学习笔记(14)--- BARs & Base & Limit
BARBase address register用来申请内存范围,访问类型(P-MMIO, NP-MMIO, IO), 宽度(32/64 BITS)以及系统分配的首地址Base & LimitPCIe EP(TYPE 0 HEADER)没有这两个寄存器RC, SWITCH (TYPE 1 HEADER)包含这两个寄存器用作设定RC/SWITCH SECONDAR原创 2017-03-21 17:46:49 · 3793 阅读 · 0 评论 -
PCIe学习笔记(15)--- TLP的ROUTING方式
PCIE是POINT TO POINT的,不像PCI,是SHARED-BUS,总线上的数据,是被所有EP DEV看到的。这一点与USB2.0比较类似,是广播方式的(BROADCASTING)USB3.0也修改了广播方式,变成了ROUTING方式OS(ORDERED SET) 与DLLP是在一个LINK之间交互的,不需要ROUTINGTLP可能会在多条LINK之间交互,所以需原创 2017-03-24 18:12:47 · 4130 阅读 · 0 评论 -
PCIe学习笔记(16)--- Power Management (1)
参与电源管理的组件:OS: 全局系统电源管理ACPI DRIVER: 针对EMBEDDED SYSTEM DEVICES(非INDUSTRY-STANDARD)例如:CHIPSET-SPECIFIC REGISTERS, SYSTEM BOARD-SPECIFIC REGISTERSPCI PM定义了一组寄存器,由PCIE BUS DRIVER 而非ACPI DRIVER来控制原创 2017-04-01 17:30:01 · 5947 阅读 · 0 评论 -
PCIe学习笔记(17)--- Power Management (2)
PCI-PM spec定义了一组POWER MANAGEMENT CAPABILITY CONFIGURATION REGISTERS该组寄存器位于PCI-COMPATIBLE CONFIGURATION SPACE (256 BYTE)CAPABILITY ID = 01hD0-3之间的切换,是由软件对PM CAPABILITY REGISTERS中的PMCSR 的POWER原创 2017-04-02 22:44:26 · 10922 阅读 · 0 评论 -
PCIe学习笔记(18)--- Power Management (3)
一,ASPM--ACTIVE STATE POWER MANAGEMENTASPM是硬件自主的,软件无法控制且也无视其状态的变化,软件只能通过配置寄存器来使能或禁止ASMPASPM是LINK相关的电源管理机制ASPM只在D0状态存在ASPM包括两种LINK状态: L0s(transmitter in EI electrical idle), L1 ASPM(both trans原创 2017-04-03 22:37:01 · 9603 阅读 · 0 评论 -
PCIe学习笔记(22)--- 中断(3)---MSI-X
MSI-XMSI最多支持32MSI-X最多支持2048Message control: bit 15: MSI-X Enable (是否用MSI-X中断,或者用MSI, INTx来替代)bit 14: Function Mask (是否可以发中断)10:0: Table size in N-1cap structure:MSI-X Table原创 2017-07-14 14:35:43 · 4008 阅读 · 0 评论 -
PCIe学习笔记(21)--- 中断(2)---MSI
MSIMSI cap registers(config space area, 256B):Target mem addrdata value to write to targetnumber of unique messagesMSI寄存器刚刚才了解的一点Target message address register一般是address of Lo原创 2017-07-14 14:17:07 · 1400 阅读 · 0 评论 -
PCIe学习笔记(20)--- 中断(1)--- Legacy
MSI 与 INTx Message是不同的东西Command: Interrupt Acknowledge for INTR(PIC output) (INTx# inputs)PIC returns a 8-bit value called the Interrupt Vector获得VECTORSMP, from PIC to IO APICAPIC bu原创 2017-07-11 19:02:40 · 6040 阅读 · 0 评论 -
PCIe学习笔记(13)--- Prefetchable and Non-Prefetchable Memory
MMIO(memory mapped IO)分为两种类型一,PREFETCHABLE二,NON-PREFETCHABLEPREFETCHABLE MMIO有以下特点:一,读没有副作用二,多笔写事务可以合并为一笔PREFETCHABLE读,可以允许提前CACHE一些数据某些寄存器类型的MMIO,不适合作为PREFETCHABLE,因为读有副作用,如状态原创 2017-03-21 16:52:45 · 9947 阅读 · 0 评论 -
PCIe学习笔记(12)--- PCIe总线的枚举过程 ENUMERATION
1.画张图PROCESSOR^||Primary bus|Root ComplexHost to PCI bridge||Secondary bus |Bus 0Bridge 的UPSTREAM, 我们称它为PRIMARY BUSBridge的DOWNSTREAM,我们称它为SECONDARY BUS原创 2017-03-13 13:16:12 · 12245 阅读 · 0 评论 -
PCIe学习笔记(4)---PCIe的层次结构--TRANSACTION LAYER
1. PCIE分为下列层次:DEVICE CORE/SOFTWARE LAYERTRANSACTIONDATA LINKPHYSICAL2.DEVICE CORE/SOFTWARE LAYER这一次,其实就是具体的功能层,例如,网卡的功能,这就需要网卡的硬件部分以及网卡的驱动3.TRANSACTION LAYER有四种REQUESTMEM原创 2017-03-09 18:19:56 · 6581 阅读 · 0 评论 -
PCIe学习笔记(5)---PCIe的层次结构--DATA LINK LAYER
1.DATA LINK LAYER主要负责一,TLP的错误检测, (类似USB中的LGOOD, LBAD, LRTY ?), 主要是检测TLP的SEQUENCE NUMBER与LCRC二,FLOW CONTROL, 类似USB中的LCRD, LCRD1/LCRD2三,LINK POWER MANAGEMENT,类似USB中的LGOUx, LAU, LXU,LPMA2.原创 2017-03-10 11:19:20 · 3599 阅读 · 0 评论 -
PCIe学习笔记(6)---PCIe的层次结构--PHYSICAL LAYER
1.PHYSICAL LAYER分为两部分数字逻辑部分,与电气部分数字逻辑部分,主要用来做数字并行串行化与数字串行并行化2.PHYSICAL LAYER负责在TLP,DLLP前后加上FRAMING (USB3中,也类似), 这里的FRAMING,就是作为边界的作用START与END, 各一个BYTE3. PCIE如果有多条LANE那么原创 2017-03-10 13:57:22 · 3814 阅读 · 0 评论 -
PCIe学习笔记(7)--- BDF
1.busesBUS 0 VIRTUAL PCI BUS一般分配给ROOT COMPLEXBUS 0 VIRTUAL PCI BUS上面,一般有几个VIRTUAL PCI TO PCI BRIDGE(P2P), 且有固定分配的BUS, DEV, FUN每一个P2P构成了一条新的BUS,且有一个对应的BUS NUMBERBUS的扫描,使用的是深度优先(这个是软件还是硬件的原创 2017-03-10 17:58:13 · 5303 阅读 · 0 评论 -
PCIe学习笔记(8)--- 配置地址空间
1.PCI的配置空间,其实是一种标准避免了以前使用跳线,而产生的中断,IO,MEMORY等资源的分配冲突从而体现了Plug & Play的设计思想2.每一个FUNCTION对应一个CONFIGURATION ADDRESS SPACE3.PCI-Compatible configuration space一共256 BYTES前64 BYTES是HE原创 2017-03-12 12:52:19 · 4777 阅读 · 0 评论 -
PCIe学习笔记(9)--- 配置空间的两种访问方式--LEGACY
1.IO访问一段历史:早期的PC,只有64KB的IO空间到了PCI协议出现的时候,IO空间只留下两段,0x800-0x8FF, 0xC00-0xCFF因些,根本不可能将系统中的所有PCI FUNCTION 配置空间都放到这两段IO空间中去另外一点,当时的内存空间,似乎也不是很够用,所以,也没有说将PCI FUNCTION的配置空间映射到内存空间中去原创 2017-03-12 13:37:19 · 4257 阅读 · 0 评论 -
PCIe学习笔记(10)--- 配置空间的两种访问方式--ENHANCED
1.前面说过配置空间从原来的256B扩展到了4K2.由于原先的IO方式,必须是由两步构成先是写ADDRESS PORT,再是DATA PORT的读或写在单CPU,单线程的情况下,没有问题但在多CPU,多线程的情况下,就会产生访问的同步问题3.ENHANCED方式,就是将配置空间,映射到MEMORY空间MEMORY访问,是单步的,不存在原创 2017-03-12 22:35:59 · 2718 阅读 · 2 评论 -
PCIe学习笔记(11)--- 配置空间的读写请求
1.有两种类型的读写请求分别是TYPE 0与12TYPE 0的REQUEST HEADER中TYPE FIELD = 00100TYPE 1的REQUEST HEADER中TYPE FIELD = 001013.读与写的区别在于:REQUEST HEADER的FMT = 000, READFMT = 010, WRITE原创 2017-03-13 11:20:10 · 3154 阅读 · 0 评论 -
PCIe学习笔记(19)--- Power Management (4)--software init link pwr mng
1.一旦软件将EP放入D1,2,3HOT 中的任何一个状态,EP需要进入L1EP在需要响应CONFIG读写的时候,回到L02. EP收到CONFI写, PMCSR -- POWER STATE, EP就发送PM_Enter_L1 DLLP,让LINK进入L1 (PM_Request_ACK response)3.what is flow control ty原创 2017-04-28 17:55:22 · 3079 阅读 · 0 评论