PCIe总线-RK3588 PCIe子系统简介(八)

2024-06-16 16:28

本文主要是介绍PCIe总线-RK3588 PCIe子系统简介(八),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.PCIe子系统

RK3588 PCIe子系统如下图所示。总共拥有5个PCIe控制器。PCIe30X4(4L)支持RC和EP模式,其他4个仅支持RC模式。ITS port 1连接PCIe30X4(4L)和PCIe30X2(2L)控制器,PCIe30X4(4L)和PCIe30X2(2L)控制器使用PCIe3.0 PIPE PHY。ITS port 0连接PCIe30X1_0(1L0)、PCIe30X1_1(1L1)和PCIe30X1_2(1L2)控制器,PCIe30X1_0(1L0)和PCIe30X1_1(1L1)控制器可复用PCIe3.0 PIPE PHY和Combo PIPE PHY,PCIe30X1_2(1L2)只能使用Combo PIPE PHY。

PCIe子系统示意图

RK3588 PCIe控制器兼容PCIe1.1、2.1、3.0协议,支持的特性如下:

  1. 兼容PCIe 3.0规范
  2. 共有5个PCIe控制器
    1. PCIe Gen3x4控制器,支持RC和EP模式
      • MPS为256字节
      • 16 ATU inbound regions, 16 ATU outbound regions
      • 最大为Gen3x4 link
      • 具有硬件流控功能的2通道DMA,包含2通道读和写
      • 当使用Gen3 PHY时,使用独立扩频时钟(SRIS)的分离参考时钟
    2. PCIe Gen3x2控制器,支持RC模式
      • MPS为256字节
      • 16 ATU inbound regions, 16 ATU outbound regions
      • 最大为Gen3x2 link
      • 当使用Gen3 PHY时,使用独立扩频时钟(SRIS)的分离参考时钟
    3. 3xPCIe Gen3x1控制器,支持RC模式
      • MPS为256字节
      • 8 ATU inbound regions, 8 ATU outbound regions
      • 当连接到Gen3 PHY时,最大为Gen3x1 link,当连接到Combo PIPE PHY时,最大为Gen2x1 link
      • 当使用Gen3 PHY时,使用独立扩频时钟(SRIS)的分离参考时钟
  3. 下面的特性是可选的:
    1. Alternative Routing-ID Interpretation (ARI)
    2. 应用可选的Address Translation Services (ATS)
    3. TLP Prefix
    4. Dynamic Power Allocation (DPA)
    5. 低功耗L1 Substates (L1SS)
    6. Resizable BAR(RBAR)支持扩展的RBAR和VF Resizable BAR
    7. 独立扩频时钟(SRIS)的分离参考时钟
    8. PCI Express Active State Power Management (ASPM)
    9. PCI Express 高级错误报告(AER)支持多个头部日志记录
  4. 支持Latency Tolerance Reporting (LTR)
  5. 支持Optimized Buffer Flush and Fill (OBFF)
  6. 内部数据通路(PIPE)时钟频率可为62.5 MHz, 125 MHz, 250MHz
  7. 高级电源和时钟管理
  8. 拥有地址转换单元
  9. 具有MSI-X功能
  10. Automatic Lane Reversal
  11. Up-configure Support
  12. RAS DES (Debug, Error Injection, and Statistics)
  13. 支持生成和校验ECRC
  14. 支持通过Configuration Intercept Controller修改配置写请求
  15. Store-and-forward Queue Modes for Rx TLPs
  16. 对于Posted, Non-posted, and Completion传输支持配置过滤规则
  17. Configurable BAR Filtering, I/O Filtering, Configuration Filtering and Completion Lookup/Timeout
  18. Three Application Transmit Clients
  19. MSI中断支持Per-Vector Masking (PVM), Extended message data
  20. MSI-X支持Per-Vector Masking (PVM)

2.PCIe控制器

RK3588 PCIe控制器的示意图如下图所示。由RAW core和一些应用逻辑组成(Client和CLK/RST)。RAW core实现了PCIe协议和一些特定功能,包含多种AXI接口,RADM/XADM/CDM/eDMA/PMC/CXPL。

PCIe控制器示意图

下面对其中一些模块的功能进行介绍。

2.1.DBI Slave

DBI Slave可以通过DBI接口访问控制器内部CDM寄存器,如配置空间寄存器,DMA寄存器、ATU寄存器、特殊的Shadow寄存器(IP厂家定制寄存器)。DBI内部划分了2个部分,可通过CS2进行选择,具体如下图所示。当然这部分寄存器,本地CPU和远程CPU都可访问。

CDM空间

如PCIe30X4(4L)拥有2块DBI空间,如下图所示。

RC寄存器

PCIe30X4(4L)作为RC时,DBI可以访问的寄存器如下图所示:

PCIe30X4(4L)DBI空间

PCIe30X4(4L)作为EP时,DBI可以访问的寄存器如下图所示:

EP寄存器

2.2.Client

Client包含了和PCIe控制器交互的逻辑,如发送和接收PCIe消息,请求进入和退出PM状态,处理中断、配置操作模式、读取基本的调试信息等等。寄存器地址范围如上图所示。部分寄存器如下图所示:

client寄存器

2.3.RADM

Receive Application-Dependent Module (RADM)实现了PCIe传输层接收数据包的功能,具体的功能如下:

  1. 整理和过滤接收的TLP。过滤规则和路由可配置
  2. 缓冲和排队接收的TLP
  3. 将接收的TLP路由到控制器接收的接口

RADM模块维护了Receive Completion Lookup Table (LUT) 表,用于跟踪完成报文和监测发送non-posted请求的完成报文是否超时。当在规定的时间内没有接收到预期的完成报文,则会上报超时事件。

2.4.XADM

Transmit Application-Dependent Module (XADM)实现了PCIe传输层发送数据包的功能,具体的功能如下:

  1. TLP仲裁
  2. 构造TLP
  3. 流量检查

XADM发送路径采用cut-through架构,除了retry buffer之外,没有实现发送缓冲区和队列(buffering/queues)。控制器内部维护了一个目标完成查询表(Target
Completion Lookup Table),其存储了接收到的请求的TLP头部信息。

2.5.CDM

Configuration-Dependent Module (CDM) 实现了下面的功能:

  1. 标准的PCIe配置空间
  2. 控制器特有的寄存器空间(Port Logic Registers)

2.6.eDMA

eDMA拥有一个读通道和一个写通道,可同时进行存储器事务读写。支持scatter-gather。若传输完成或者发生了错误,可选择中断通知本地CPU或者通过MWr中断(MSI或MSI-X)通知远端CPU。DMA write将本地内存数据拷贝到远端内存。DMA read:将远端内存数据拷贝到本地内存。

DMA

2.7.PMC

PMC模块实现了PCI Express Active State Power Management (ASPM)功能。

2.8.CXPL

CXPL是PCIe的核心模块,实现了PCIe的协议,由事物层、数据链路层和物理层组成,外部通过PIPE接口与PHY连接,具体如下图所示。

CXPL

参考资料

  1. PCIEXPRESS体系结构导读
  2. PCI Express technology 3.0
  3. PCI Express® Base Specification Revision 5.0 Version 1.0
  4. https://www.cnblogs.com/DF11G/p/17341493.html
  5. Rockchip RK3588 TRM

这篇关于PCIe总线-RK3588 PCIe子系统简介(八)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1066947

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供

LIBSVM简介

LIBSVM简介 支持向量机所涉及到的数学知识对一般的化学研究者来说是比较难的,自己编程实现该算法难度就更大了。但是现在的网络资源非常发达,而且国际上的科学研究者把他们的研究成果已经放在网络上,免费提供给用于研究目的,这样方便大多数的研究者,不必要花费大量的时间理解SVM算法的深奥数学原理和计算机程序设计。目前有关SVM计算的相关软件有很多,如LIBSVM、mySVM、SVMLight等,这些

urllib与requests爬虫简介

urllib与requests爬虫简介 – 潘登同学的爬虫笔记 文章目录 urllib与requests爬虫简介 -- 潘登同学的爬虫笔记第一个爬虫程序 urllib的基本使用Request对象的使用urllib发送get请求实战-喜马拉雅网站 urllib发送post请求 动态页面获取数据请求 SSL证书验证伪装自己的爬虫-请求头 urllib的底层原理伪装自己的爬虫-设置代理爬虫coo

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中,优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率,还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化,传统的优化算法在许多领域逐渐暴露出其不足之处。带动量的随机梯度下降法(Momentum SGD)应运而生,并被广泛应用于各类深度学习模型中。 在本篇文章中,我们将深入探讨带动量的随