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

相关文章

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

rust 中的 EBNF简介举例

《rust中的EBNF简介举例》:本文主要介绍rust中的EBNF简介举例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 什么是 EBNF?2. 核心概念3. EBNF 语法符号详解4. 如何阅读 EBNF 规则5. 示例示例 1:简单的电子邮件地址

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

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