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.

[参考译文] TDA4VH-Q1:如何将 MCU2_1上的 EthFw 客户端集成到 Vision_Apps

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1335696/tda4vh-q1-how-to-integrate-ethfw-client-on-mcu2_1-into-vision_apps

器件型号:TDA4VH-Q1
主题中讨论的其他器件:TDA4VH

尊敬的专家:

在 PSDK 中、ethfw 文件夹中有2个演示应用、即在  用作 CPSW9G 控制核心的 MCU2_0上运行的服务器和在 MCU2_1上运行的客户端、使 MCU2_1能够通过 CPSW9G 访问以太网。

但现在我想将 CPSW9G 与 VISION_APPS 一起使用。 我可以看到、MCU2_0上的服务器部件已集成到 vision_apps 中、位于 foler vision_apps/utils/ethfw 下、因此我可以在  运行 vision_apps 时访问 MCU2_0和 A72上的 CPSW9G。 在运行 VISION_APPS 时、我们可以对 MCU2_1执行相同的操作吗?MCU2_1上的客户端部件是否有任何移植指南?

此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们可以在运行 vision_apps 时对 MCU2_1执行相同的操作吗?MCU2_1上的客户端部件是否有任何移植指南?

    这是可行的,但我们没有任何移植指南相同。
    可以在 EthFw 中引用 MCU2_0服务器应用、在 vision_apps 中引用类似的应用(utils/ethfw/app_ethfw_freertos.c)作为参考、并以类似的方式集成 src。

    此致、
    苏德黑尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我将尝试以 MCU2_0为例。 谢谢。

    此致、

    棉安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    好了,我来尝试遵循 mcu2_0的示例。 谢谢。

    当然可以。
    除了上述内容外、我们还可以支持哪些内容吗?

    此致、
    苏德黑尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我想知道在 MCU2_1上运行的客户端是否可以应用于 MCU1_0? 在其他技术领域、MCU 域中的 R5F 是否也可以通过 MAIN-CPSW9G 接入以太网? 如果可以、您是否具有本案例的移植指南?

    此致、

    棉安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我想知道在 MCU2_1上运行的客户端是否可以应用于 MCU1_0? 在其他技术领域、MCU 域中的 R5F 是否也可以通过 MAIN-CPSW9G 接入以太网? 如果是、您是否有此案例的移植指南?

    它可以将 MCU2_1客户端运行到 MCU1_0、但 MCU1_0具有需要与以太网客户端集成的 SciServer、因为 SciServer 负责 RM 和 PM (资源和电源管理)。

    我们有参考补丁用于从 MCU2_1移植到 MCU3_0、但不适用于 MCU1_0。 有关相同内容、请参阅 EthFw 用户指南。
    此外、我们还启用了 MCU1_0 AUTOSAR 客户端。 请参阅  SDK 8.6的常见问题解答、它支持从9.0版开始的开箱即用 SDK。

    此致、
    苏德黑尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我成功地在 MCU2_1上运行了客户端。 但现在我还有 几个问题。

    首先、当我尝试使用 集成在 SDK 中的 iperf 服务器来测试针对 MCU2_0 (即本地交换机端口)和 MCU2_1 (使用 虚拟交换机端口)的带宽时、我得到类似的值、即大约125Mbps。 但是、当我同时观察这两个内核的 CPU 负载时、我可以看到 MCU2_0的平均负载大约 为80%、而 MCU2_1的平均负载仅为45%。 我想知道在类似带宽下、MCU2_0和 MCU2-1上的 CPU 负载为何有如此显著的差异? 125Mbps 的带宽是否符合预期?

    其次、我还尝试通过 Shared Memory Transport.demo 运行内核间虚拟以太网。 但当我 在 A72-Linux 上运行 Tapif 演示时、该演示由于总线错误而始终崩溃、您是否遇到过这样的错误? 这样做的可能原因是什么? 日志已附加。

    e2e.ti.com/.../tapif.log

    此致、

    棉安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    且125Mbps 的带宽是否满足期望?

    我们已使用 ENET 示例进行测试、请参阅 PDK 数据表中的带宽数据。 我们在 Rx 中得到~130Mbps、在 Tx 中得到~180Mbps。

    我平均获得大约80%的 MCU2_0,而只有大约 45%的 MCU2_1。

    CPU 负载的计算方式。 在本例中、我们拥有 Enet lwip 示例、这是单独的应用、我们将观察 CPU 负载和带宽信息。

    其次,我还尝试通过共享内存 Transport.demo 运行内核间虚拟以太网。 但当我 在 A72-Linux 上运行 Tapif 演示时、该演示由于总线错误而始终崩溃、您是否遇到过这样的错误? 这样做的可能原因是什么? [/报价]

    否、我们没有遇到此类问题。 如果使用 TAP 配置的缓冲区和队列地址与 Linux 器件树的值不同、那么如果地址被保留、可能会在 A72引发异常。

    请您确认 ethfw 中 TAP conf 文件中缓冲池和队列基址的 地址是否与上述日志文件中显示的地址相同?
    如果不是这样的话、请按照上面的那样修改地址 J784S4_ic.conf 文件、并且重建 TAP 应用并使用更新的 TAP 应用。

    此致、
    苏德黑尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们使用 Enet 示例进行了测试,请参阅 PDK 数据表中的带宽数据。 我们在 Rx 中得到~130Mbps、在 Tx 中得到~180Mbps [/引号中]

    在我的测试中、MCU2_0/1用作 TCP 服务器、在 Rx 中的其他字中为125Mbps。 嗯、该值看起来接近于您的结果。

    如何测量此 CPU 负载[/报价]

    CPU 负载取自 API APP_PERF_STATS_CMD_GET_CPU_LOAD。 我认为这是整个内核的负载、而不是单独的应用程序。 但是、 在未运行 iperf 测试时、我已经解除平均负载、然后我才得到80%和45%的值。


    您能否确认 ethfw 中 tap conf 文件中的缓冲池地址和队列基址 是否与上面的日志文件中显示的地址相同?
    [/quote]

    我已经检查了保留存储器和 J784S4_ic.conf。 该区域与下图所示相同。 是否还有其他可能的错误原因?

    此致、

    棉安

    [/quote][/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    CPU 负载的计算方式。

    CPU 负载取自 API APP_PERF_STATS_CMD_GET_CPU_LOAD。 我认为这是整个内核的负载、而不是单独的应用程序。 但是、 在未运行 iperf 测试时、我已经解除平均负载、然后我才得到80%和45%的值。

    [/报价]

    您是说在没有运行 iperf 时、MCU2_0上的 CPU 负载数据为80%、MCU2_1上的 CPU 负载数据为45%?
    如果是、可能是由于 MCU2_0和 MCU2_1内核上运行了其他作业。 MCU2_0将捕获摄像头数据并处理数据、然后发送到显示和 ethfw 计时器任务以进行 PHY 链路 向上/向下检查。


    请您确认 ethfw 中 TAP conf 文件中缓冲池和队列基址的 地址是否与上述日志文件中显示的地址相同?

    我已经检查了保留存储器和 J784S4_ic.conf。 该区域与下图所示相同。 是否还有其他可能的错误原因?

    [/报价]

    我希望您使用的是正确的9.0 SDK。
    据我们所知、已经验证的客户很少、点击9.0 SDK。 需要检查您为何面临此问题。
    您能否提供 Linux 终端日志、并使用点击配置文件。

    此致、
    苏德黑尔

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是说 MCU2_0上的 CPU 负载数据为80%,MCU2_1上的 CPU 负载数据为45%是在 iperf 未运行时吗?

    iperf 正在运行时、MCU2_0上的 CPU 负载为80%、MCU2_1上的 CPU 负载为45%。 当未运行 iperf 测试时、MCU2_0和 MCU2_1上的 CPU 负载 分别为5%、5%和2%。 测试过程中、我没有连接任何摄像头或其他设备、只连接一台用作 iperf 客户端的 PC。

    我希望您使用的是9.0 SDK。
    据我们所知、已经验证的客户很少、点击9.0 SDK。 需要检查您为何面临此问题。
    您能否提供 Linux 终端日志,并点击配置文件使用。

    是的、我使用的是 SDK9.0。 您可能会点击配置文件、dmesg 日志并点击下方的日志。

    e2e.ti.com/.../J784S4_5F00_ic.conf.log

    e2e.ti.com/.../40334.dmesg.log

    e2e.ti.com/.../7024.tapif.log

    此致、

    棉安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    当 iperf 正在运行时,MCU2_0上80%的 CPU 负载和 MCU2_1上45%的 CPU 负载。 当未运行 iperf 测试时、MCU2_0和 MCU2_1上的 CPU 负载 分别为5%、5%和2%。 测试过程中,我没有连接任何摄像头或其他设备,只连接一台用作 iperf 客户端的 PC。

    我懂了。 但是、奇怪的是、我们在为 iperf 单独运行 Enet 示例时观察到80%的负载。 在与 EthFw 服务器和客户端应用程序集成时,理想情况与预期相同。 都可以在上面提到的数据表中找到相同的方法。

    是的,我使用的是 SDK9.0。 您可能点击配置文件、dmesg 日志并点击下方的日志。

    如果您通过非视觉应用程序加载 ethfw、您可以查看 EthFw 服务器端用于内核通信的地址是什么。
    默认 EthFw 使用链接器文件(ethfw/apps/app_remoteswitchcfg_server/MCU2_0/j784s4/linker_mem_map.cmd)中的0xAF000000和0xAF200000、也在 MPU 配置文件(r5f_mpu_j784s4_default.c)中。

    请根据上述内容进行更新点击配置文件并重新编译 EthFw、使用更新后的二进制文件并进行一次检查。

    如果您正在运行 Vision Apps、且 ethfw 也是 MCU2_0 VISION 应用的一部分、则上述地址已被处理。

    此致、
    苏德黑尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果您正在运行 Vision Apps,且 ethfw 也是 MCU2_0 Vision Apps 的一部分,则上述地址已被处理完毕。
    [/报价]

    我正在 Vision Apps 中使用内存映射。

    此致、

    棉安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果您正在运行 Vision Apps、且 ethfw 也是 MCU2_0 VISION 应用的一部分、则上述地址已被处理。

    我正在 Vision Apps 中使用内存映射。

    [/报价]

    让我们尝试检查一次触控界面与 VISION 应用程序、并在下周回复给您。
    请允许我们有一些时间进行内部测试。

    此致、
    苏德黑尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果您正在运行 Vision Apps、且 ethfw 也是 MCU2_0 VISION 应用的一部分、则上述地址已被处理。

    我正在 Vision Apps 中使用内存映射。

    让我们尝试检查一次触控界面与 VISION 应用程序、并在下周回复给您。
    请允许我们有一些时间进行内部测试。

    [/报价]

    很抱歉响应延迟。

    我已经尝试在 TDA4VH 上使用 SDK 9.0创建 TAP 接口、并且我成功地按照 EthFW 用户指南中有关 TAP 应用程序编译和安装的步骤创建了 TAP 接口。

    此外、还遵循了 Vision Apps 用户指南制作 SD 卡、并运行 VISION INIT 脚本以加载 ethfw。

    请参阅我旁边的以下捕获。





    您能否检查为 TAP 分配的端缓冲区将覆盖您的任何应用程序。

    此致、
    苏德黑尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的答复。

    您能否共享您的 Tapif 二进制文件以及配置文件、以便我可以尝试一下协议? 我想确定它是否是由我的系统环境导致的问题。 谢谢你。

    下面随附了我的 zip 格式 Tapif 二进制文件。  

    e2e.ti.com/.../tapif.zip

    此致、

    棉安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请找到我旁边的 TAP 应用文件夹供您参考。 它还包含配置信息。
    e2e.ti.com/.../tap_5F00_app.7z

    此外、能否使用 vison Apps 用户指南确认您是否已构建 Vision 应用并安装到二进制文件。 如果没有、可通过以下视觉应用用户指南进行检查、以确定为视觉应用构建二进制文件。

    此致、
    苏德黑尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我已经 确认总线错误是由我的 Tapif 二进制造成的。 更具体地说、它与编译器优化有关。 如果我使用 gcc -O2编译它、我会得到总线错误。 但是如果我使用 gcc -O0编译它、它就会正常运行。 这对我来说是有点奇怪的结果。 您也可以尝试使用不同的优化级别。  

    现在、A72和 MCU2_0之间的核间以太网通信是可以的。 我通过 iperf 工具和用作服务器的 MCU2_0获得大约11Mbps 的带宽。 您觉得该值合适吗?

    但是、我新遇到的问题是 A72和 MCU2_1之间的核间以太网无法正常工作。 我无法从 A72-Linux ping MCU2_1。 事实上、我无法在启动 Tapif 后从 PC ping MCU2_1、而在运行 Tapif 之前也可以。 我注意到、在 starif 后的短时间内、MCU2_1的 CPU 负载会增加到100%。 在我看来、MCU2_1在运行 Tapif 后挂起。 你对这个问题有什么想法吗?

    此致、

    棉安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我 确认总线错误是由我的磁带二进制文件引起的。 更具体地说、它与编译器优化有关。 如果我使用 gcc -O2编译它、我会得到总线错误。 但是如果我使用 gcc -O0编译它、它就会正常运行。 这对我来说是有点奇怪的结果。 也许您也可以尝试使用不同的优化级别。

    我们尚未尝试使用不同的优化级别、而且所有的优化级别都未经过测试、因此不受支持。
    需要使用默认的优化级别、在构建 TAP 应用程序时无需传递任何级别。

    现在、A72和 MCU2_0之间的核间以太网通信可以。 我通过 iperf 工具和用作服务器的 MCU2_0获得大约11Mbps 的带宽。 此值对您来说是否合适?

    是的、它大约为11Mbps、因为它是基于共享存储器的访问。
    不 适用于高吞吐量路径、仅适用于 要使用的客户端和服务器之间的共享信息。

    但是,我的新问题是 A72和 MCU2_1之间的核心间以太网不起作用。 我无法从 A72-Linux ping MCU2_1。 事实上、我无法在启动 Tapif 后从 PC ping MCU2_1、而在运行 Tapif 之前也可以。 我注意到、在 starif 后的短时间内、MCU2_1的 CPU 负载会增加到100%。 在我看来、MCU2_1在运行 Tapif 后挂起。 您对此问题有任何想法吗?

    MCU2_1和 TAP 之间可能存在任何存储器损坏。 定义的内核间路径对于所有队列是通用的、即 MCU2_0到 A72、MCU2_0到 MCU2_1、反之亦然。  
    因此、A72无法访问描述符存储器和缓冲区轮询存储器中提供的所有空间。

    您是否可以从 TI 原样运行 MCU2_1 RTOS 客户端并检查一次。 我是说没有视觉集成。

    此致、
    苏德黑尔