SK-AM64B: AM64x CPSW3G split ownership: Linux port1 + R5 port2 EtherCAT, shared RX channel / RX flow issue

Part Number: SK-AM64B

Hi TI team,
We are working on an AM64x SK-AM64B based design and trying to split CPSW3G usage between Linux A53 and an R5 core.
Target architecture:
  • Linux A53 owns CPSW port1 / eth0 for normal TCP/IP.
  • R5 owns CPSW port2 for EtherCAT.
  • Since AM64x CPSW3G appears to have a single host RX DMA channel, Linux initializes and owns the shared RX channel.
  • R5 is intended to use a dedicated RX flow, currently flow 19, with RX ring 130 / FDQ ring 130.
  • ALE / rxnfc rules on Linux steer port2 / broadcast traffic to thread 3, corresponding to flow 19.
Resource ownership setup:
  • Linux host: host_id 12.
  • R5 host: host_id 36.
  • In rm-cfg.yaml embedded into tiboot3, we tried sharing these resources:
    • type 1963, start_resource 16, num_resource 1, host_id 12
    • type 1963, start_resource 16, num_resource 1, host_id 36
    • type 1964, start_resource 16, num_resource 4, host_id 12
    • type 1964, start_resource 19, num_resource 1, host_id 36
    • type 1943, start_resource 128, num_resource 4, host_id 12
    • type 1943, start_resource 130, num_resource 2, host_id 36
Linux DTS is trimmed to only tx0 + rx for CPSW:
  • dma-names = "tx0", "rx"
Observed behavior:
  • Linux CPSW driver probes successfully.
  • eth0 exists and works as the Linux-side CPSW netdev.
  • eth1 is intentionally absent; port2 is reserved for R5.
  • Linux logs show:
    • ch_flowid_cnt = 4
    • flow-id-base = 16
    • port2 ALE policer points to thread 3 / flow 19
    • remote flow bind for flow19 / ring130 returns OK
  • However, the runtime register readback remains zero:
    • rchan16 RFLOW_RNG at 0x4a8100f0 = 0x00000000
    • flow19 RFE/RFG/RFH remain 0
    • R5 RX ring occupancy remains 0
    • R5 EtherCAT RX packet counter remains 0
  • This is reproducible after a cold power cycle with the updated tiboot3.
R5 side observations:
  • R5 can initialize TX and transmit EtherCAT frames.
  • R5 TISCI requests for RX ring, RX flow, and RX channel return NACKs, which we currently treat as expected because Linux owns the shared RX channel.
  • R5 reports:
    • rx_ready = 1
    • rx_flow = 19
    • ring_rx = 130
    • occ_rx = 0
    • rflow_rng = 0x00000000
    • rfe = 0x00000000
Questions:
  1. Does AM64x SYSFW/RM support sharing the CPSW RX channel resource, type 1963, between A53 host 12 and R5 host 36?
  2. If yes, what is the correct rm-cfg.yaml / boardcfg representation for primary/secondary ownership on AM64x?
  3. Is duplicate resasg entry sharing valid for AM64x, or is the primary/secondary sharing model only supported through SysConfig-generated metadata not visible as simple duplicate ranges?
  4. Can Linux own and initialize the single CPSW RX channel while an R5 core owns a remote RX flow and RX rings?
  5. For AM64x CPSW3G, is steering traffic from Linux CPSW ALE/rxnfc to an R5-owned RX flow supported, or must all RX flows belong to the Linux host if Linux owns the RX channel?
  6. Are resource types 1963, 1964, and 1943 the complete set required for this shared RX-channel design, or are additional resources required?
  7. Is there any TI reference design or SDK example for AM64x where A53 Linux uses CPSW port1 and R5 independently receives CPSW port2 traffic through a dedicated RX flow?
Our main goal is network isolation:
  • J5 / port1 remains Linux TCP/IP.
  • J6 / port2 is dedicated to R5 EtherCAT.
  • Both ports should coexist without Linux owning a netdev for port2.
Could you confirm whether this architecture is supported on AM64x, and if so, what exact RM boardcfg and driver ownership model should be used?
  • Hello, we have received your case and the investigation will take some time. Thank you for your patience.

  • 你好,

    请稍等片刻,仔细阅读以上内容后再回复。

    问候,

    图沙尔

  • 你好,

    是否有 TI 提供的 AM64x 参考设计或 SDK 示例,其中 A53 Linux 使用 CPSW 端口 1,而 R5 通过专用的 RX 流独立接收 CPSW 端口 2 的流量?

    我目前的理解是,针对这种特定用例,官方并没有提供 SDK 示例。创建一个示例需要花费大量精力,所以我只想更好地了解这个项目。首先,客户是谁?预期的生产规模是多少?客户处于开发周期的哪个阶段?实现所描述的功能需要多长时间?

    对于 AM64x CPSW3G,是否支持将来自 Linux CPSW ALE/rxnfc 的流量导向 R5 拥有的 RX 流?或者,如果 RX 通道属于 Linux 主机,则所有 RX 流都必须属于 Linux 主机?

    从 Linux 系统方面,我可以内部确认是否支持此功能。据我目前了解,Linux 系统可以为 CPSW 端口启用多个接收流,并通过 MAC 地址将其映射到每个端口,但要让 R5 拥有其中一些接收流,还需要进一步研究,这需要一些时间。

    道林