【PCIe Bus 专栏】
文章平均质量分 90
PCIe Bus 专栏
余额抵扣
助学金抵扣
还需支付
¥179.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
主公讲 ARM
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【PCIe 总线及设备入门学习专栏 9 -- PCIe AER】
摘要:PCIe AER机制用于检测和处理PCIe传输错误,在Linux内核中通过pci_error_handlers结构体实现错误回调。触发hot reset时出现的"AER: device recovery failed"报错属于正常现象,原因是reset会暂时断开链路导致访问超时。建议优化方案包括实现错误处理回调、等待链路恢复后再访问设备,或使用相关API(如pci_wait_for_pending_transaction)改进reset流程。该报错不影响reset结果,但完善错误处原创 2025-12-08 21:06:19 · 74 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.4 -- Linux EP driver iommu 与 DMA】
本文介绍了IOMMU在Linux系统中的应用场景及关键概念。IOMMU主要用于PCIe设备DMA访问时的地址转换(IOVA→PA)、提供安全隔离以及支持虚拟化场景。文章对比了启用/关闭IOMMU的差异,详细说明了IOVA的使用时机,并列举了内核态地址转换的相关API,包括虚拟地址转物理地址(virt_to_phys)、用户态地址转换(get_user_pages)以及IOMMU相关转换(iommu_iova_to_phys)。特别指出CPU访问BAR时不经过IOMMU,只有PCIe设备DMA时才需要IOMM原创 2025-12-04 21:50:53 · 163 阅读 · 0 评论 -
【PCIe EP 设备入门学习专栏 -- 8.2.3 Local Bus Controller (LBC) 详细介绍】
功能LBC 模块为远端链路伙伴 (PCIe Wire)和本地 CPU (通过 DBI)提供统一的访问机制。CDM (Configuration and Debug Module) 内部寄存器外部应用寄存器 (通过 ELBI 接口连接到控制器)访问来源远端 RC 侧(PCIe Wire)本地 CPU(通过 DBI 接口)原创 2025-09-08 21:23:44 · 166 阅读 · 0 评论 -
【PCIe EP 设备入门学习专栏 -- 8.2.2 PCIe EP Controller Register Types 介绍】
类别默认行为可写条件访问路径只读且DBI (特殊寄存器通过 DBI2 (dbi_cs2=1) 访问DBI2 (Wire 访问 (RC 侧)永远只读无法变为可写PCIe 配置事务一句话总结:→ 可以用 DBI 写部分 RO/HwInit Registers(仅本地)。→ 必须用 DBI2 写。Wire (RC 访问)→ RO 永远只读,不受任何设置影响。原创 2025-09-08 21:07:35 · 142 阅读 · 0 评论 -
【PCIe EP 设备入门学习专栏 -- 8.2.1 PCIe EP Capability Register 介绍】
→ 从0x34开始。→ 从0x100开始。每个结构 =。通过遍历 Next Pointer,可以枚举所有支持的功能。Synopsys PCIe EP Controller 使用双链表(PCI 兼容 + PCIe 扩展)组织能力寄存器。保证了对传统 PCI 驱动和 PCIe 6.2 规范的兼容。iATU 和 DMA 寄存器的访问方式在 4.80a 版本之后改为直接寻址,更易于使用。原创 2025-09-07 21:50:42 · 140 阅读 · 0 评论 -
【PCIe EP 设备入门学习专栏 -- 8.2 PCIe EP 寄存器配置空间介绍】
每个Function拥有配置空间。包含 PCI-SIG 标准寄存器(Base Spec 定义)以及 Synopsys 特定的应用逻辑寄存器(外部接入控制器的寄存器)寄存器类型地址范围访问方式说明标准 PCIe Spec 定义,主机必需可见Synopsys 定义,可选是否映射进配置空间配置空间之外MEM不在 0x000–0xFFF 内,只能用 MEM Request配置空间之外MEM所有 Functions 共享配置空间之外MEM所有 Functions 共享应用定义范围。原创 2025-09-07 21:42:21 · 206 阅读 · 0 评论 -
【PCIe EP 设备入门学习专栏 -- 8.1.3 PCIe EP AXI Bridge Module】
在AMBA AXI5 配置下,Synopsys PCIe EP Controller 内部包含一个AXI Bridge 模块,用于在与AXI5 事务之间进行双向转换。条件且时启用。功能入站的 PCIe AtomicOp TLP 会被桥接转换为 AXI5 原子事务。由执行翻译。出站的 AXI5 原子事务会被桥接转换为 PCIe AtomicOp TLP。由执行翻译。换句话说,AXI Bridge 就是一个双向的原子操作协议转换器。AXI Bridge。原创 2025-09-06 22:08:05 · 160 阅读 · 0 评论 -
【PCIe EP 设备入门学习专栏 -- 8.1.2 PCIe EP 通路详细介绍】
v| LBC || |v vLocal CPU:发起配置/控制访问DBI:本地 CPU 的访问入口CDM:实现标准 PCIe 配置空间 + 控制器寄存器LBC:中间层,既能访问 CDM,又能访问外部寄存器ELBI:挂外部应用寄存器的总线接口。原创 2025-09-06 21:01:18 · 166 阅读 · 0 评论 -
【PCIe EP 设备入门学习专栏 -- 8.1.1 PCIe EP 接口总结】
出口接口之一,用于应用发送出站请求 (Outbound Requests) 或 Completion。应用通过 DBI 访问控制器内部寄存器 (CDM),或者 ELBI 上的外部寄存器。可选接口,用于通过 DBI 或 Config 请求直接访问 PHY 的寄存器。这些接口处理从链路对端接收到的 TLP,根据配置分流到不同逻辑接口。TRGT1:接收接口,用于连接控制器与应用或 AXI bridge。PCIe 定义了多种消息机制,控制器为应用提供了独立接口。应用逻辑可监测这些请求,并可修改控制器的响应行为。原创 2025-09-06 12:37:38 · 143 阅读 · 0 评论 -
【PCIe EP 设备入门学习专栏 -- 8 PCIe EP 架构详细介绍】
Synopsys PCIe 5.0 EP 架构由多个功能模块组成,整体遵循分层 + 模块化设计CXPL(事务层 + 链路层 + 物理层 MAC)XADM(仲裁/生成)、XAIM(应用接口)RADM(过滤/路由/Completion)CDM(配置空间)、PMC(电源管理)、LBC/DBI(寄存器访问)MSG_GEN(消息)、CXS(多芯片一致性)原创 2025-09-06 11:57:40 · 228 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3.4 -- PCIe PHY Firmware 固件加载流程】
Firmware加载流程需要根据PHY的要求进行设计,加载流程通常需要相关复位处于释放状态,且工作时钟保持稳定后才能开始,此时才能保证数据能够有效写入。常见设计中,firmware的数据容量较大(有些PHY需要的firmware容量为96KB),因此 firmware存储在rom中,在 PCIe PHY 开始建链之前,需要将Firmware写入到PHY中,本质是写入到存储固件代码的存储模块中。简单来说,firmware就是一套配置文件,决定了在特定的时刻给控制类寄存器写入合适的数值以完成物理层的电路功能。原创 2025-07-27 22:54:07 · 420 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.1.3 -- PCIe PERST# 时序要求】
要求含义应用20ms 内进入 Detect设备在复位释放后,需迅速参与链路训练硬件侧需及时准备 LTSSM 启动等待 100ms 配置高速链路需给设备时间稳定内部逻辑软件侧需延迟访问配置空间。原创 2025-07-26 18:14:52 · 448 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.1.2 -- PCIe EP core_rst_n 与 app_rst_n】
信号名来源控制范围用户使用建议perst_nRC(外部)整体 PCIe EP 复位不直接用于同步逻辑core_rst_nIP 自动控制通常不直接使用app_rst_nIP 输出用户逻辑复位推荐作为用户 reset 信号同步寄存器输出app_rst_n 输出用于抗 metastability。原创 2025-07-15 22:23:25 · 256 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.1.1 -- PCIe PERST# 信号的作用】
PERST#是 PCIe 规范定义的一个低有效信号,全称为 “PCI Express Reset”。用于向 PCIe Endpoint 或 Root Complex 发出全局复位请求。通常由主机(RC, Root Complex)控制,在系统上电或热复位时拉低该信号。原创 2025-07-15 22:08:49 · 476 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3 -- PCIe 与 EP 中的 DMA协同工作介绍】
当EP 端和 Host 端有大量数据交互时,比如 NPU 的训练或者推理场景中,就需要Host 端向 EP 端搬运大量数据,这种场景就可以在 PCIe 系统中实现个 DMA,用来数据搬运。在PCIe环境中,比如,GPU 作为端点设备(EP),需要通过DMA从主机内存中读取数据,比如进行图形渲染或计算任务时的大量数据传输。比如主机主动将数据写入GPU的显存,这时候主机使用Memory Write TLP,而GPU不需要发送请求,只需要接收数据。主机驱动程序分配系统内存(源地址:0x8000_0000)。原创 2025-03-24 22:30:15 · 775 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.3 -- PCIe 数据搬运组包介绍】
PCIe使用TLP来传输数据,而TLP有最大载荷限制(Max Payload Size),通常是256字节或更大,这取决于 PCIe版本和设备的能力。GPU驱动发起DMA请求,指定源地址(内存0x8000_0000)和目标地址(GPU显存0x1000_0000),数据长度1MB。若PCIe设备支持,可将多个连续地址的TLP合并为更大的有效载荷(需硬件支持),减少TLP数量,提升吞吐量。若数据地址按MPS对齐(如256字节对齐),可避免跨地址边界的TLP分割,简化处理流程。原创 2025-03-24 09:31:09 · 449 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.2 -- PCIe 在进行大数据搬运时是如何组包的?】
同时,数据链路层和物理层的处理可能不需要用户过多关注,但需要简要提及它们的作用,比如确保数据包的可靠传输和物理信号的正确性。首先,当需要传输大量数据时,比如 GPU 进行显存和系统内存之间的数据传输,PCI e是如何处理这些数据的,如何将大数据分成多个包,以及这些包的格式是怎样的。若PCIe设备支持,可将多个连续地址的TLP合并为更大的有效载荷(需硬件支持),减少TLP数量,提升吞吐量。若数据地址按MPS对齐(如256字节对齐),可避免跨地址边界的TLP分割,简化处理流程。原创 2025-03-21 23:15:29 · 328 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.1 -- PCIe 中为何只有 TLP 会被 Switch 和 RC 进行路由?】
TLP在事务层生成,需要端到端传输,因此必须被路由;而DLLP和Ordered Set分别服务于数据链路层和物理层的本地功能,仅在相邻设备间传递,无需路由。这种设计优化了网络效率,减少了不必要的处理,确保了各层职责明确。原创 2025-03-21 23:00:13 · 209 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4 -- PCIe GIC LPI 与 MSI 中断机制】
能产生 MSI 中断的设备, 都有一个 DeviceID (设备ID), 它产生的每一个MSI中断都有一个EventID(事件ID)。ARM的 cpu,特别是 cortex-A 系列的 CPU,都是多 core 的 cpu,因此对于多 core 的 cpu 的中断管理,就不能像单 core 那样简单去管理,由此 arm定义了。对于原来的 SPI, 它也是可以使用MSI的方式传递的,这个功能是可选的。如果GICV3支持MSI方式的SPI,要产生/清除中断时, 操乍如下。架构,来支持多核 cpu 的中断管理。原创 2025-03-13 09:39:03 · 678 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3 -- PCIe 三种路由方式详细介绍】
所谓 为了保证传输的可靠性,A设备会有一个buffer,里面会保存TLP, 它会一直保存,直到接收到了一个回应,如果过了一段时间没有收到回应,那么 A 设备会把 buffer 中的报文重发一下,所以 TAG 就是用来标记TLP的,收到的回应里面也会有 tag,根据收到的TLP 的 tag 把 buffer 中的 TLP 释放掉。下面的那些设备也可以发出一些消息,比如汇报一些产生的中断,汇报一些电源相关的信息,这些消息称为消息报文,它们使用的就是隐式路由。所以可以通 TLP 中获取具体使用的是哪种路由方式。原创 2025-03-12 23:23:09 · 396 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.3.1 -- PCIe Controller and PHY】
在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。国内应该有公司做出相应的phy芯片(例如芯动科技、牛芯半导体),毕竟常见的PCIe 3.0才8 Gbps的速率,最新的6.0才64Gbps。在该模式下,数据传送不是由CPU负责处理,而是由一个特殊的处理器DMA控制器来完成,因此占用极少的CPU资源。控制器逻辑包含了 IP 的 host 设计,以及 PCIe 协议中所规定的事务层、数据链路层、物理层实现逻辑,原创 2025-03-12 09:25:33 · 649 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4.5 -- PCIe 中断 MSI 与 MSI-X 机制介绍】
软件在初始化的时候会把 cpu 地址空间的 中断地址转化为 PCIe 地址空间的地址,再 写入设备,同时也会把 Message Data 写入数据,后面 PCI/PCIe 想发中断的时候只需要将 Message Data 写入到 Message Address 上即可,也即会发出一个信号的写传输, 当 PCIe Controller 或者 GIC 收到数据后就会触发中断。表示中断的状态,不管是否屏蔽中断,设备想发出中断的时候,可能是被屏蔽了,但是即使被mask 掉了,pending bit 还是会置位。原创 2025-03-05 22:41:21 · 317 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.3 -- 访问 PCIe 设备过程】
由于A是一个桥,所以需要进行一个深度优先的配置,看看A 桥下面有哪些设备,结果发现A设备下面是一个C设备,然后就去配置C设备,接着就要去读C设备的配置寄存器,发现它仍然是一个桥,既然是一个桥,那么又需要去配置它的三个总线号,C设备的上游总线号是1,它自己的总线号加1,也即为2,它下游所有桥的最大总线号暂时设置为255,这时把C桥配置好了;那么对于终端的设备呢?Bus0 在发送数据的时候,发送的时串行数据包,那么我们需要了解下它的数据包是什么样子的,这里我们就需要先了解 PCIe 设备的层次结构。原创 2025-02-28 23:32:33 · 298 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 10.1 -- Linux PCIe 驱动框架 之 RK3399 Region1 访问】
如上图 1-3 所示,在addr0 寄存器中有 bit[5:0],这六位用来表示 cpu 发出来的地址里面可以使用多少位放到 如图 2-15 中的 TLP里面,TLP 需要64位数据,这64位数据里面有一部分可以由CPU 提供,另外一部分可以由 addr0 和 addr1提供,由cpu提供的位数由addr0 的bit[5:0] 来决定,不够的再由 addr0 和 addr1 中的其他位来提供,以后 cpu 发出访问 region 1 的地址的时候,就会产生如下图2-15 所示的TLP 包。原创 2025-02-28 23:26:39 · 324 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 10 -- Linux PCIe 驱动框架】
假设 EP1 中的配置空间中声明了需要100Bytes的地址空间, EP2 声明了需要200Bytes的地址空间,软件驱动程序在扫描设备的时候就会知道 EP1 需要100Bytes 的地址空间, EP2 需要 200Bytes 的地址空间,于是软件就在 addr1 到 addr2 中划出100Bytes的空间,在 addrA 到 addrB 中划出100Bytes 的空间,并且会把首地址写入到EP1 配置空间的寄存器中。probe 函数就会去扫描识别出挂载 pcie 总线上的一个或者多个pcie 设备。原创 2025-02-28 22:48:50 · 370 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1 -- PCI | PCIe 总线概述】
当CPU 发出一个地址,这个地址属于某个 PCIe 设备时,这时会选中PCIe 控制器,PCIe 控制器会把CPU发出来的地址加上偏移值得到PCI地址空间的地址,然后把得到的地址通过PCIe/PCI 总线发给对应的PCI/PCIe 设备,PCI/PCIe 设备会检测PCI总线或者PCIe 总线上的信号,但它发现PCI/PCIe 总线上的地址属于自己的范围时,它就会进行回应。对于软件来说 PCIe 或者 PCI 总线都是一样的,它们都是兼容的,软件程序只是去访问某个地址。原创 2025-02-19 08:56:35 · 688 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.4 -- PCI 设备访问方法】
比如对于设备1 它的 IDSEL 肯定是某一个信号,同样对于设备2,它的IDSEL肯定是另外一个信号,到底是通过哪个引脚来选中这个设备,不同的 Root Bridge 有不同的设计,比如可以设计成功过 AD31 信号来选中 PCI 设备1,通过 AD30 来选中设备2,当然也可以通过其他引脚来单独选中PCI设备1。CPU 发出的地址位于CPU的地址空间,CPU 发出的某个地址有可能是访问内存的或者是访问某个其它模块的,也有可能是访问某个PCI 设备的,CPU 发出的地址范围不一样,它访问到的外设就不一样。原创 2025-02-17 23:28:17 · 458 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 10 -- pci linux driver】
每种类的PCI设备都可以用结构类型pci_dev来描述。更为准确地说,应该是每一个PCI 功能,即 PCI 逻辑设备都唯一地对应有一个pci_dev设备描述符。该数据结构的定义如下(/* 全局链表元素 global_list:每一个 pci_dev 结构都通过该成员连接到全局 pci 设备链表 pci_devices 中 *//* 总线设备链表元素 bus_list:每一个pci_dev结构除了链接到全局设备链表中外,还会通过这个成员连接到* 其所属PCI总线的设备链表中。原创 2025-02-10 14:01:52 · 447 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 6.2 -- PCIe VDM (Vendor Defined Messages)】
在PCIe协议中,Vendor Defined Messages (VDMs) 是一种允许厂商定义和传输特定功能的消息类型。这种机制扩展了标准 PCIe 消息的功能,可以用于实现供应商自定义的功能,例如固件更新、设备配置和诊断信息传输。PCIe VDM 是通过实现的,它遵循 PCIe 协议栈的结构,包括事务层、数据链路层和物理层。原创 2025-01-20 22:12:52 · 1308 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 6.1 -- PCIe MCTP】
MCTP 是由 DMTF(Distributed Management Task Force)定义的协议,用于提供设备和主机间基于不同传输层(如 PCIe、I²C、USB 等)的管理消息通信能力。在 PCIe 环境下,MCTP 消息作为的一种特殊形式传输,并被赋予唯一的 VDM Code 值0000b,以区别于其他 VDM。MCTP 在 PCIe 环境中作为一种基于 Type 1 VDM 的管理通信协议,提供了设备与主机之间的灵活数据传输能力。原创 2025-01-20 21:53:26 · 1494 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 9 -- PCIe linux 命令学习】
是一个强大的工具,可以获取详细的设备信息。结合配置信息、设备状态和扩展功能字段,可以深入诊断 PCI 设备问题,例如中断配置错误、内存分配问题或功能支持状态。原创 2025-01-20 21:32:45 · 516 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 2 -- PCIe 的 LTSSM 和 Enumeration】
何谓枚举呢,其实枚举就是RC发现整个 PCIe拓扑结构的过程。PCIe作为一个局部总线设计,有着复杂的拓扑结构,只有知道了这个拓扑结构,才方便RC传递数据,路由数据。枚举过程中RC采用DFS(深度优先搜索)算法进行设备BDF的发现和分配,BDF这个三元组决定了PCIe设备的唯一性。原创 2025-01-20 09:34:02 · 689 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.3.3 -- PCIe Inbound and Outbound】
Outbound:主机发起,数据流主要从主机到设备。Inbound:设备发起,数据流主要从设备到主机。请求和 Completion 的方向是相对的,但它们的命名基于最初的请求方向。原创 2025-01-20 09:24:05 · 605 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3.2 -- PCIe 枚举与 PCIe PHY firmware 的区别与联系】
PCIe(Peripheral Component Interconnect Express)枚举是指操作系统或固件对 PCIe 总线上的设备进行探测、识别并为其分配资源(如地址空间、中断号)的过程。它是确保 PCIe 设备能够正确注册和参与系统运行的关键步骤。原创 2025-01-16 09:16:22 · 789 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3.3 -- PCIe 掩图 mask 介绍】
在 PHY 初始化时,屏蔽掉超出版本限制的部分控制位,可以有效适配较低版本的设备。在 PCIe 的自检与校验(如链路训练和容错)过程中,如果某些信号或位有暂时的异常,掩图可以忽略这些异常位,确保系统能继续运行或完成调试过程。掩图可以屏蔽特定的信号或位,使调试人员更专注于关心的部分,减少其他干扰信号的影响。在某些敏感数据传输场景,例如带有加密协议的 PCIe 通道,掩图可以暂时禁用或隔离某些寄存器位,以防止数据误用。在调试 PCIe PHY 时,通过掩码屏蔽特定寄存器的高/低位,可以隔离干扰信号。原创 2025-01-15 21:25:56 · 535 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3.1 -- PCIe PHY firmware load | trainning | link up 区别与联系】
Firmware 加载是基础,完成后才能进入链路初始化流程。Training是确保信号传输可靠的关键阶段。Link Up标志着链路成功建立,开始支持数据传输。三者紧密配合,共同实现从硬件准备到高速通信的完整链路初始化过程。原创 2025-01-15 21:17:40 · 1325 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3 -- PCIe PHY firmware load | trainning | link up 区别与联系】
设备间即可通过该链路传输 TLP(Transaction Layer Packet) 和 DLLP(Data Link Layer Packet),完成设备间的实际数据交互。是 PCIe 链路初始化过程中用于校准和参数协商的关键阶段,其目标是确保双方设备在传输物理信号时的可靠性和高效性。训练阶段并未传输实际的用户数据,而是使用专门的控制和测试模式(例如 TS1、TS2 信号),以确保链路对接正确并优化参数。通过上述过程可以看出,Training 为链路的稳定奠定基础,Link Up 则是实际的工作阶段。原创 2025-01-15 21:11:32 · 824 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4.1 -- PCI 总线的地址空间分配】
其中x86处理器可以直接访问的只有 Memory Address Space 和 I/O Address Space。注:在PCIe中,则引入了一种新的 Configuration Address Space 访问方式:将其直接映射到了 Memory Address Space 当中。每个PCI设备通过PCI寄存器中的基地址寄存器来指定映射的首地址。注:需要注意的是PCI的地址空间和x86系统中的FSB并不是对等的,而是具有一定的映射关系。也就是PCI上的所有设备共同映射到这。,所以其存储地址空间为。原创 2024-12-31 09:38:58 · 394 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4.2 -- PCI 总线的三种传输模式 】
举一个例子,比如说某一个PCI设备需要向内存(SDRAM)中写入一些数据,该PCI设备会向CPU请求一个中断,然后CPU首先先通过PCI总线把该PCI设备的数据读取到CPU内部的寄存器中,然后再把数据从内部寄存器写入到内存(SDRAM)中。在仲裁器的控制下,完成主机身份的切换,进而获得PCI总线的控制权,然后与总线上的其他PCI设备进行通信。,这是因为获得主机身份的PCI设备(Initiator)和另一个PCI设备(Target)通常采用不同的数据格式,除非他们是同一个厂家的设备。原创 2024-12-31 09:23:22 · 717 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4.3 -- PCI 总线的中断和错误处理】
在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是可选信号。在多数嵌入式处理器系统中,PCI设备的数量小于中断控制器提供的外部中断请求引脚数,而且在嵌入式系统中,多数PCI设备仅使用。在PCI总线中,INTx信号属于边带信号。在x86处理器系统中,有许多PCI插槽,处理器系统并不知道在这些插槽上将要挂接哪些PCI设备,而且也并不知道这些PCI设备到底需不需要使用所有的。原创 2024-12-31 09:11:07 · 849 阅读 · 0 评论
分享