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.

[参考译文] AM2634-Q1:使用大端字节序选项构建错误

Guru**** 2964790 points

Other Parts Discussed in Thread: AM2634

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1659745/am2634-q1-build-error-with-big-endian-option

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

尊敬的支持团队:

我尝试构建在编译器构建选项中启用了 big-endian 选项的 UDP 服务器代码。

我得到以下错误。

[31]致命错误#16001:目标文件具有不兼容的字节顺序(“D:/ti/mcu_plus_sdk_am263x_11_00_00_19/source/kernel/nortos/lib/nortos.am263x.r5f.ti-arm-clang.release.lib =小端字节序、“/app_cpswconfighandler.o“=大端字节序)

我是否需要更改其他位置?

此致

Varma

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

    您好、

    错误显示应用目标文件被编译为大端字节序、但 MCU+ SDK 预编译的库(如 nortos.am263xr5f.ti-arm-clang.release.lib)被编译为小端字节序。 不能将字节序不同的目标文件混合使用。

    解决方案选项:

    选项 1:从应用程序中删除大端字节序(推荐)
    -从项目构建选项中删除 big-endian 编译器标志
    - ARM Cortex-R5F 通常以小端字节序模式运行、所有 TI SDK 预编译库都是小端字节序
    -检查项目的 makefile 或 CCS 项目设置并删除任何-mbig-endian 或类似标志

    选项 2:以大端字节序(复杂)方式重新编译整个 SDK
    如果您确实需要大端字节序:
    1.使用大端字节序编译器标志重新构建所有 MCU+ SDK 库(nortos、驱动程序、enet-LLD 等)
    2.这需要:
    cd ${MCU_PLUS_SDK_PATH}
    #添加--endian=big 以在 makefile 中构建标志
    使-s -J8 profile=release ENDIAN=big
    3.与大端字节序重建库的链接

    检查构建设置:

    在 CCS 工程属性或 makefile 中、查找:
    -编译器标志:- mbig-endian 或-- endian=big
    -链接器标志:应该匹配编译器字节序

    问题:
    1.为什么需要大端字节序? 大多数网络协议处理软件中的字节序 (htons/ntohs)
    2.您添加了哪些编译器标志来启用大端字节序?

    此致、
    Shaunak

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

    尊敬的 Shaunak:

    我在“Properties“窗口中选择了大端字节序选项。

    我正尝试将其用作最坏情况的解决方案。 我们现在面临的一个主要问题是 AM2634 无法从客户端的节点接收。 AM2634 可以将数据发送到客户端的节点、并显示在其系统上。 仅接收其节点的数据。 他们的数据正在网络中除我们以外的所有其他端点接收。  

    我们能够在其网络中从笔记本电脑发送测试数据、这是一个偶然的问题。 但最终、由于我们必须从客户端节点接收数据、因此我们必须执行此操作。

    我正在使用 TRDP 协议进行铁路应用。

    是否知道什么可能导致该问题? 客户端使用 Cisco 网络设备。

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

    我认为这不是字节序问题。

    1.你能检查你的 LWIP_STATS 看看你是否收到了任何数据吗?

    2.如果在 LWIP_STAS 中看不到数据包、可以进一步检查 CPSW 统计信息以了解 CPSW 是否已收到任何数据。

    3.这也可能是您的 ALE 会员资格的问题。 您使用的是多播地址还是广播地址?

    此致。
    Shaunak

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

    我已经使用 LWIP_STATS 进行了检查。 每 5 秒调用一次 udp_stats_display。 udp_recv 计数卡在 4。

    如何查看 CPSW 统计信息?

    客户端的节点每 100mS 发送一次数据。 CPSW 统计信息是否会减慢 Rx 速度?

    此致

    Varma

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

    您好、

    请参阅此信息以获取 CPSW 统计信息: https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AaBu6ik6ZY8v2032wjLx6Q__AM26X-ACADEMY__t0CaxbG__LATEST

    udp_recv 计数滞留在 4。

    CPSW 停止向主机端口提供数据包(运行 LWIP 的 R5F)、或者器件停止接收数据包本身。 根据 CPSW 统计信息、您可以验证问题是否是器件没有接收到数据包 (MAC 端口上的 Rx 计数不会增加、或者计数是否正在增加并且 LwIP 停止从 CPSW 获取数据包

    CPSW 统计中断会增加一些开销、但这只需几微秒、我预计它们在此不会导致任何问题/延迟。

    此致、
    Shaunak