This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我使用的是 AM243x-LP
我正在探索 TRM、找到了 PRU_ICSSG 加速器、当时认为可以使用该加速器来处理以太网帧、而不会在主处理器(R5F0-0)中增加开销、但我仍然不明白它是否适用、我能否仅使用 PRU 加速器来配置和处理来自2个以太网端口的数据包?
此外、CPSW 外设和 PRU_ICSSG 加速器有何差异、因为我看到它们具有相同的作用、如果存在重大差异、请告诉我
您好、Hussein、
您可以在此处阅读有关 AM243x 的网络功能的信息: mcu_plus_SDK_API_guide_am243x_09_02_00_50_Networking
支持使用两个硬件外设联网:
PRU 内核主要用于工业通信、也可用于其他应用、例如电机控制和定制接口。 PRU-ICSSG 将器件中的主 ARM 内核释放给其他功能、例如控制和数据处理。
ICSSG 的主要优势在于、我们可以减轻主 ARM 内核的实时处理需求、并 可在 PRU 可编程时使用 ICSS 实现各种协议。
您可以找到 MCU+SDK 提供的 CPSW 和 ICSSG 示例列表、以满足不同的以太网和网络要求- MCU_PLUS_SDK_API_guide_am243x_09_02_00_50_ICSSG Examples_Networking
此外、您可以 从工业通信 SDK 中了解有关 PRU-ICSS 上基于 RTOS 和非 RTOS 的工业通信、现场总线和网络应用的更多信息: ind_comms_sdk_api_guide_am243x_09_02_00_08
如果您有任何其他问题、请告诉我。
此致、
尼蒂卡
我已经阅读了所有需要的数据和链接、但如果 PRU 释放了主 ARM 内核、为什么这些示例使用 R5F0-0来运行 PRU? 我试过 CPSW 和 PRU_ICSSG 这两个示例、它们执行相同的操作、并使用 ARM 处理器处理数据流和初始化、但它们之间没有什么真正的区别。
我 知道 加速器的设计旨在处理无需主内核参与的操作、但正如我在示例中看到的情况、我的主要问题是、我可以对 PRU 内核进行配置和编程、以便在不使用 ARM 内核的情况下处理以太网帧吗?
我测量了 CPSW 和 PRU_ICSSG 这两个外设的 CPU 负载、发现它们几乎相同、因为我认为加速器应该会加速运算、我该如何确保我以正确的方式使用加速器?
您好、Hussein、
PRU-ICSSG 在数据链路层工作、具有低延迟确定性操作、并且后续处理由 ARM 内核处理。 PRU 经过优化、在实时执行中具有低延迟和无抖动、能够处理工业以太网标准的 MAC 层功能。
使用 PRU 的目的是满足实时处理对可预测性、确定性和低延迟响应能力的需求。 在处理器中使用高性能 ARM 内核组合 PRU 可 针对成本和功耗优化系统、从而实现两全其美、同时通过高效的重新编程灵活进行功能升级。
能否配置并编程 PRU-core 以在不使用 ARM 内核的情况下处理以太网帧?
根据具体用例、您可以编写汇编代码来控制 PRU、但建议在不需要实时处理的组件中利用 ARM 内核的高性能。
此致、
尼蒂卡
我在 CPSW 使用过几个月、决定切换到 PRU_ICSSG 进行更优化、但在两个示例中计算 CPU 负载后、我发现它们是相同的、我无法确定哪一个在本例中更有用。
CPSW 还可以处理数据链路层并处理第2层功能、它们的性能不会有所不同。如果有使用 CPSW 和 PRU_ICSSG 的基准、请将数据发送给我。
谢谢你。
您好、Hussein、
当您说进行更优化时、您在寻找哪些参数? 是您想要减少的只是 ARM 内核 CPU 负载、还是您正在寻求更高的吞吐量或 ICSSG 的任何其他指标?
此外、您比较了哪些 CPU 负载示例?
此致、
尼蒂卡
我希望减少 ARM CPU 的使用率、并尽量增加其它硬件的使用率。
我从 Colasoft 以它的最大速度发送到 ECU、每秒钟计算一次 CPU 负载、我发现它们是相同的、这意味着两个硬件以相同的方式使用 CPU。
CPSW 和 ICSSG 在 ARM CPU 处理以太网帧发送和接收过程中的作用有何主要区别?
您好、Hussein、
了解了、下面我来寻找性能基准、并获取开发团队对此的意见。
请允许我花点时间向您提供相关信息。
此致、
尼蒂卡
再问几个问题、
-您对 ICSSG 有什么期望,您正在考虑多大程度的优化?
-有软件级实现,可以进行优化性能,所以你可以简要介绍一下你的用例,你试图用 CPSW 实现什么,你想要切换到 ICSSG?
-您将在您的系统中处理什么类型的流量? 是否也有任何吞吐量要求?
此致、
尼蒂卡
-我想尽量减少使用 ARM 内核来减少 CPU 负载,因为我的情况是处理很多帧和网关, ALE 在 CPSW 处理路由和防火墙没有 ARM CPU 的贡献和纠正我,如果我错,我发现 ICSSG 处理操作没有 CPU 贡献与 CPSW 相同。
-我需要在没有软件贡献的情况下区分硬件组件,因为任何软件都将由 ARM 内核处理,如果在 PRU 上有可以执行的软件来处理没有 ARM CPU 的帧,请引导我。
-该软件正在处理大量的以太网帧、CAN 和 LIN 与高流量,因此最大化使用的硬件在我的情况下将是有效的。
您好、Hussein、
我明白了、请允许我花点时间对此与您联系。 我还会让开发团队参与到有关您的用例的讨论中。
此致、
尼蒂卡
您好、Hussein、
您能详细介绍一下系统中的以太网流量吗?
-你在使用像 lwip 这样的堆栈吗? 或任何工业协议呢? 您要处理什么类型的以太网帧?
-您想对帧执行什么后处理?
-您在前面提到过,您将使用2个以太网端口,您能否分享系统图或信息,以了解您的系统中的数据流是什么样的,以及两个端口的用途是什么?
此致、
尼蒂卡
您好、Hussein、
我想分享开发团队的更新、首先、您当前对 ICSSG 和 CPSW 的评估是正确的、正如我在前面提到的、您可以编写/修改控制 PRU 的固件代码、以处理比现有功能更多的功能。
目前为止、我们不支持自定义 MAC 固件、但如果您有兴趣自行卸载固件、我们可以共享 PRU 固件源和功能、例如定制数据包过滤器等、可以通过 ICSSG 实现以减轻 ARM CPU 的负载。
此致、
尼蒂卡
如果该固件的使用量会比 CPSW 减少 ARM 内核的使用量、请与我分享。
在本例中、我将使用2个以太网端口路由高流量数据、在某些情况下、可以路由到 CAN 或 LIN、而不仅仅是以太网、在这种情况下、更大限度地减少 ARM 内核的使用会非常有效。
我不使用任何轻量级堆栈或任何其他接口、我只是处理具有 MAC 地址和 VLAN 的以太网数据包、我使用 CPSW 通过 ALE 进行处理、然后我切换到 PRU_ICSSG 以加快运行。
因此、如果现有示例未能有效地使用 PRU_ICSSG、请指导我为如何充分利用该加速器
非常感谢。
ICSSG 和 CPSW3G 只是以太网的两种实施、两者都可以用作交换机或两个以太网端口。 ICSSG 的独特之处在于、它还能够运行 EtherCAT、PROFINET、EtherNet/IP https://software-dl.ti.com/processor-industrial-sw/esd/ind_comms_sdk/am243x/latest/docs/api_guide_am243x/index.html 等工业以太网协议 、包括卸载特定 SW API 或相应的冗余等一些功能。 对于标准以太网、除了 CPSW3G 的功能外、它不能提供卸载功能。 它们使用相同的驱动程序接口。
理论上、可以为 ICSSG 编写固件、以实现独特的功能、例如将内容从以太网直接放置到 CAN-FD、或反之。 但我们不提供此类固件。
https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/latest/exports/docs/api_guide_am64x/EXAMPLES_ENET_INTERCORE_ICSSG.html 是一个使用 ICSSG 将数据包通过两个 MAC 地址拆分到两个 IP 堆栈的示例。