rk3399 pcie

This commit is contained in:
weidongshan
2021-12-30 16:04:06 +08:00
parent b003d6c448
commit 457fa86d8f
12 changed files with 169539 additions and 0 deletions

View File

@@ -0,0 +1,135 @@
## RK3399_PCIe芯片手册解读
参考资料:
* 《PCI Express Technology 3.0》Mike Jackson, Ravi Budruk; MindShare, Inc.
* [《PCIe扫盲系列博文》](http://blog.chinaaet.com/justlxy/p/5100053251)作者Felix这是对《PCI Express Technology》的理解与翻译
* 《PCI EXPRESS体系结构导读 (王齐)》
* 《PCI Express_ Base Specification Revision 4.0 Version 0.3 ( PDFDrive )》
* 《NCB-PCI_Express_Base_5.0r1.0-2019-05-22》
* [SOC中AXI总线是如何连接的](https://zhuanlan.zhihu.com/p/157137488)
* [AXI总线整理总结](https://blog.csdn.net/tristan_tian/article/details/89393045)
* [PCIe中MSI和MSI-X中断机制](https://blog.csdn.net/pieces_thinking/article/details/119431791)
开发板资料:
* 芯片手册Rockchip RK3399TRM V1.3 Part2.pdf
```shell
doc_and_source_for_drivers\IMX6ULL\doc_pic\
10_PCI_PCIe\芯片手册\RK3399
Rockchip RK3399TRM V1.3 Part2.pdf
```
* https://wiki.t-firefly.com/zh_CN/ROC-RK3399-PC-PLUS/
AXI相关
* ug1037-vivado-axi-reference-guide.pdf
```shell
doc_and_source_for_drivers\IMX6ULL\doc_pic\10_PCI_PCIe\协议\AXI
ug1037-vivado-axi-reference-guide.pdf
```
* [AXI总线你需要知道的事儿](https://zhuanlan.zhihu.com/p/96804919)
* [AXI总线整理总结](https://blog.csdn.net/tristan_tian/article/details/89393045)
* [AMBA、AHB、APB、AXI总线介绍及对比](https://zhuanlan.zhihu.com/p/161077476)
### 1. AXI总线
#### 1.1 连接方式
我们一直使用这个图来简化CPU与外设之间的连接
![](pic/10_PCI_PCIe/06_address_space.png)
实际上我们可以更深入一点下图是STM32MP157的总线结构图(其他芯片没有画出总线结构图)
![image-20211230133623252](pic/10_PCI_PCIe/57_stm32mp157_bus.png)
本节视频我们只关心AXI总线高速设备之间通过AXI总线连接。Master和Slave是多对多的关系它们之间读、写可以同时进行的内部结构图如下
![image-20211230133754834](pic/10_PCI_PCIe/52_axi.png)
#### 1.2 五个通道
在AXI总线中读写可以同时进行有5个通道
* 读:
* 读地址通道:传输读操作的地址
* 读数据通道:传输读到的数据
* 写:
* 写地址通道:传输写操作的地址
* 写数据通道:传输要写的数据
* 写响应通道:传输写操作的结果
![image-20211230141124832](pic/10_PCI_PCIe/53_axi_read.png)
![image-20211230141144288](pic/10_PCI_PCIe/54_axi_write.png)
| 通道名称 | 通道功能 | 数据流向 |
| -------------- | -------------------------------------- | ---------- |
| read address | 读地址通道 | 主机->从机 |
| read data | 读数据通道(包括数据通道和读响应通道) | 从机->主机 |
| write address | 写地址通道 | 主机->从机 |
| write data | 写数据通道 | 主机->从机 |
| write response | 写响应通道 | 从机->主机 |
#### 1.3 信号线
我们只列出本节视频关心的信号线:
| 信号 | AXI4 | AXI4-Lite |
| ------ | -------------------------------- | -------------------------------- |
| AWADDR | 写地址通道地址线最多可达64位 | 写地址通道地址线最多可达64位 |
| WDATA | 写数据通道数据线32~1024位 | 写数据通道数据线32位 |
| ARADDR | 读地址通道地址线最多可达64位 | 读地址通道地址线最多可达64位 |
| RDATA | 读数据通道数据线32~1024位 | 写数据通道数据线32位 |
#### 1.4 PCIe控制器
RK3399的PCIe控制器就是挂在AXI总线上在芯片手册中可以看到
* AWADDRAXI总线的写地址通道地址线简单理解就是CPU要写PCIe控制器时发出的地址线
* ARADDR AXI总线的读地址通道地址线简单理解就是CPU要读PCIe控制器时发出的地址线
![image-20211230144101706](pic/10_PCI_PCIe/55_rk3399_pcie.png)
### 2. 地址空间
RK3399访问PCIe控制器时CPU地址空间可以分为
* Client Register Set地址范围 0xFD000000~0xFD7FFFFF
* Core Register Set :地址范围 0xFD800000~0xFDFFFFFF
* Region 00xF8000000~0xF9FFFFFF , 32MB
* Region 10xFA000000~0xFA0FFFFF1MB
* Region 20xFA100000~0xFA1FFFFF1MB
* ……
* Region 320xFBF00000~0xFBFFFFFF1MB
其中Region 0大小为32MBRegion1~31大小分别为1MB。
### 3. 访问流程
#### 3.1 配置空间读写流程
#### 3.2 MEM/IO读写流程

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long