新手上路
- 积分
- 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) |
|