主题中讨论的其他器件:TDA4VH
工具与软件:
你(们)好
平台:TDA4VH(我们公司的测试板卡)
SDK:ti-processor-sdk-linux-adas-j784s4-evm-09_01_00_06
我们的产品使用 EtherCAT 网络协议。 我们使用 TI 提供的 CPSW9G 专用驱动程序。当我们启动两个 EtherCAT 主站时、内核报告了大量警告。以下函数返回负值(-12)
am65_cpsw_nuss_rx_packets();
--> am65_cpsw_nuss_rx_push();
两个 EtherCAT 主站将启动两个内核线程。 Cpsw9g 专用驱动程序关闭 Rx 硬件中断并屏蔽内核协议栈。 主站直接调用 am65_cpsw_nuss_rx_packets()来获取数据包。 但我们只有一个 RX Ringbuff。 因此,当 Ringbuff 有数据时,有两个内核线程同时访问 Ringbuff。 在解析数据之前、我们不知道数据来自哪个端口。
问题:
1、我们是否有办法先确定 Ringbuff 数据来自哪个端口、然后根据 EtherCAT 主站读取?
2、如果4个线程访问 Ringbuff、则不会导致其状态障碍。
谢谢