OpenEdv-开源电子网

 找回密码
 立即注册
查看: 1103|回复: 9

基于现有RK3588的开发板,开展PCIE RC和EP对接调试,行吗?

[复制链接]

1

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2026-2-24
在线时间
5 小时
发表于 2026-2-25 22:50:28 | 显示全部楼层 |阅读模式
2金钱
如题,本人是长期从事pcie相关开发的工作者,想基于原子的RK3588开发板开展pcie的对接调试(不是常规的接wifi组件或者SSD盘),我想实现自有的RC和EP的对接,如下图所示.各位专家有了解的吗?可行吗?RK3588的IP是新思的,它是支持dual model可配置为RC和EP,就是不确定正点原子的板子在软件和硬件上是否支持配置尤其是配置为EP使用。
请各位专家帮忙,谢谢。



回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2026-2-24
在线时间
5 小时
 楼主| 发表于 2026-2-27 11:53:52 | 显示全部楼层
本帖最后由 zjk2752 于 2026-2-27 13:58 编辑

为啥没有图?
RK3588上面pcie3.0的口是可以做EP的,如果将控制器配置为EP模式,同时将m.2接口通过外接延长线转换成金手指插槽,是不是就可以插在服务器上,或者另外一块RK3588(将M.2公对公连起来)。有了解pice用用过这块板子的关注一下,谢谢。
现在车载领域的双片互联,大模型推理等都需要pcie做跨片互联,一边RC,一边EP,想找块开发板自己开发EP的通信协议的代码,欢迎大家一起研究讨论。
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2026-2-24
在线时间
5 小时
 楼主| 发表于 2026-2-27 13:59:59 | 显示全部楼层
本帖最后由 zjk2752 于 2026-2-27 14:05 编辑

奇怪,看了linux开源社区,只有对rk3399的芯片的pcie ep的支持,有开源的驱动,为什么没有RK3588的EP驱动的支持。开源社区的pcie-dw-rockchip.c支持3568和3588,只有对RC的支持,也不支持EP。
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2026-2-24
在线时间
5 小时
 楼主| 发表于 2026-2-27 14:17:16 | 显示全部楼层
好消息是,linux社区上现在已经有人在提交RK3588,RK3568支持EP的补丁了。patch如下:
https://lore.kernel.org/all/ZnbUHI5GEMCmaK2V@ryzen.lan/T/#u

如果这样的话,两块RK3588开发板如果都是以M.2接口暴露,通过一条M.2公对公的转接线连接理论是就可以实现RC和EP的对接。接下来就看原子提供的RK3588在板级能否支持板级GPIO等的配置,如配置PERST, CLKREQ, REFCLK等。
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2026-2-24
在线时间
5 小时
 楼主| 发表于 2026-3-1 20:16:44 | 显示全部楼层
good news。目前来看,正点原子的DLRK3588板子也是支持pcie EP的,从原子发布的软件包内核中看,有pcie ep的dts定义,以及PCIE EP驱动的支持。EP 控制器驱动所在driver/pci/controller/dwc/pci-dw-rockchip.c. 差点就去买友善的板子去了。

有没有人对高速接口pcie感兴趣,可以一起来调调试试。 收徒弟
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2026-2-24
在线时间
5 小时
 楼主| 发表于 2026-3-5 10:55:41 | 显示全部楼层
有没有深圳地区一起学习pcie的小伙伴,可以加我微信:goodzjk。

目前打算基于RK3588的开发板,完成一套支持pcie EP的跨片通信协议实现的代码,寻找小伙伴一起学习实现。本人从事pcie相关开发工作10年有余,欢迎一起研究。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2026-3-4
在线时间
0 小时
发表于 2026-3-9 21:15:19 来自手机 | 显示全部楼层
有没有上海地区研究pcie的
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2026-2-24
在线时间
5 小时
 楼主| 发表于 2026-3-17 21:42:01 | 显示全部楼层
a328760264 发表于 2026-3-9 21:15
有没有上海地区研究pcie的

网上交流也可以,哈哈。
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2026-2-24
在线时间
5 小时
 楼主| 发表于 2026-3-17 22:02:01 | 显示全部楼层
进展:看了一下开源的驱动以及SDK包中的PCIE RC和EP的驱动,目前来看,总体上3588的pcie的功能还是比较齐全的,总结叟下:
### M01 - RK3588 PCIE RC驱动

| Feature ID | Feature 描述 | 实现状态 | 备注 |
|------------|--------------|----------|------|
| F01-01 | 使用pcie口:pcie2x1l0| ✅ | 链路规格为X2GEN2 |
| F01-01 | 支持msi,共32个msi中断 | ✅ | 不支持msix |
| F01-02 | 支持通过GPIO PERST复位EP | ✅ | GPIO1 |
| F01-03 | 14M的32位非预取region和1G的64非预取region | ✅ | 另有1M IO和1M config |
| F01-04 | 支持sys_int,PMC,msg,leagcy,err 5种本地线中断 | ✅ | 参考dtsi定义 |
| F01-05 | 支持8个inbound和8个outbound atu | ✅ | 参考dtsi定义 |
| F01-06 | 支持通过its上报msi中断 | ✅ | 参考dtsi定义 |
| F01-07 | 支持aspm L1,支持L1SS,支持L2 | ✅ | clkreq是否支持依赖硬件,支持时需要在DTS中定义标识,suspend流程中有进入L2的流程表明是支持L2的|

### M02 - RK3588 PCIE EP驱动

| Feature ID | Feature 描述 | 实现状态 | 备注 |
|------------|--------------|----------|------|
| F02-01 | 使用pcie口:pcie3x4 | ✅ | 4L控制器,环网中配置为2x Gen3 |
| F02-02 | 支持msi,共32个msi中断 | ✅ | PCIE_CLIENT_MSI_GEN_CON 32位,不支持msix |
| F02-03 | 支持通过reset-gpios接收PERST | ✅ | GPIO4,由对端RC驱动 |
| F02-04 | BAR配置:BAR0 4M 32bit、BAR2 64M 64bit-pref、BAR4 1M 32bit | ✅ | BAR1/BAR5禁用,BAR4映射到了ELBI空间,支持产生doorbell中断,访问msix table表,resize_bar_nsticky |
| F02-05 | 单路sys中断处理linkup/DMA/hot_reset | ✅ | platform_get_irq_byname("sys") |
| F02-06 | 支持16个inbound和16个outbound atu | ✅ | EP(pcie3x4)16/16;RC(pcie2x1l0)为8/8,由控制器硬件决定 |
| F02-07 | 通过memory-region配置BAR地址 | ✅ | bar0_region 4M、bar2_region 64M |
| F02-08 | 支持Hot Reset检测与恢复 | ✅ | PCIE_CLIENT_INTR_STATUS_MISC BIT(2)、LTSSM_APP_DLY2 |
| F02-09 | 支持内置edma控制器,读写通道各2个 | ✅ | rockchip_pcie_init_dma_trx |
| F02-09 | 自实现了dma驱动,并未使用dw-edma驱动 | ✅ | rockchip_pcie_init_dma_trx |
| F02-10 | 驱动默认禁用ASPM | ✅ | config_host中清除LNKCAP ASPMS,硬件可支持L1/L1SS但驱动未启用 |
| F02-11 | ELBI空间部署了dma和iatu,支持memory map方式访问 | ✅ | 硬件支持,但当前没有此部分软件 |
| F02-12 |支持通过BAR4访问ELBI空间产生RC2EP中断,附带userdata寄存器用于配置中断信息 | ✅ | 在dw-rockchip.c驱动 |

下一步可以尝试编写RC侧ep device驱动和ep侧的epf驱动。总体目标是要实现自己的PCIE跨片通信协议(一套自定义的通信通道及SDK)
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2026-2-24
在线时间
5 小时
 楼主| 发表于 4 天前 | 显示全部楼层
发现一个问题,SDK中给的pcie-dw-ep-rockchip.c中的EP侧user中断的处理逻辑有明显的问题,通过共享内存传递中断参数的设计存在严重的竞态条件问题,会导致丢中断。
如果上一次发的中断,比如1号中断还没有处理完,又发了2号中断,那么中断就丢了。我们在实际使用的时候经常会有多通道的设计,多通道并发数据收发时,多中断通知就丢中断了。
// RC 侧(快速连续触发两个中断)
obj_info->irq_user_data_ep = 5;   // 中断 ID 5
writel(DOORBELL, elbi);            // 触发中断 1

// 如果 EP 侧还没处理完中断 1
obj_info->irq_user_data_ep = 6;   // 中断 ID 6(覆盖了 5)
writel(DOORBELL, elbi);            // 触发中断 2
结果:中断 ID 5 永久丢失,EP 侧永远收不到。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2026-3-31 03:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表