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.

[参考译文] RTOS/TDA2EVM5777:在 GMACSW_IOCTL_CPDMA_SUBMIT 之后未发出的 NSP 数据包

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663054/rtos-tda2evm5777-in-nsp-packets-not-sent-out-after-gmacsw_ioctl_cpdma_submit_packets

器件型号:TDA2EVM5777

工具/软件:TI-RTOS

您好!

我们正在创建一个网络 TX 链路、该链路使用 NSP 通过网络发送数据包。
该实现基于 ti_compons/networking/avbtp_0_10_00_00/packages/ti/avbtp/avb2nsp.c

由于开发仍在进行中、我们将发送以下虚拟数据:

[以太网标头][虚拟字节]

以太网标头(18字节)具有以下值:
- DstMacAddr =随机6字节条目
- SrcMacAddr =随机6字节条目
- VLAN TPID = htons (0x8100U)
- VLAN TCI = htons ((5 <<13)| 1024)
- EthType = htons (随机2字节)

示例 fillTxPacket 执行日志如下:

[主机] 5.481852 s:fillTxPacket:header=0x88ecc6dc size=18、data=0x8c6bb800 size=85
[主机] 5.513877 s:fillTxPacket:header=0x88ecc70a size=18、data=0x8c9b8800 size=54
[主机] 5.545812 s:fillTxPacket:header=0x88ecc738 size=18、data=0x8c0c1800 size=54 

我们已确认、我们已按照 NSP_GMACSW_Design.pdf 中的文档记录将数据包排队到 CPDMA 中。

此外、实现方式与上述参考代码类似(除了不调用 cache_xxx API)。

但是、我们无法看到实际的数据包被发送到网络。
我们使用网络捕获工具(如 Wireshark)进行检查。

由于 GMACSW 不会返回任何错误代码或提供任何输出日志、因此我们计划通过 CCS 进入 GMACSW。
但是、我们首先要确认我们是否希望 NSP 发送上述数据包、即使这些值仍然是虚拟数据?

我们是否可以获得有关如何通过 CCS 跟踪 GMACSW 的指导?



 

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

    除非要在第2层中发送数据包,否则不应引用 AVB2NSP。
    我假设您要使用 NDK 发送数据包、它是否正确?
    如果是、则应使用标准套接字 API 来发送/接收数据、NDK 将与 NSP 交互并负责传输。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Prasad、

    非常感谢您的即时通信。

    由于我们计划使用硬件流量整形(通道优先级)和硬件计时、

    我们有兴趣使用 NSP 封装。

    我们仅指 AVB2NSP 用于处理流程。

    我们正在创建 fillPacket 函数以填充必要的网络和传输头。

    此外、我们还期望在上一篇文章中提供的虚拟数据在第2层上工作。

    如果我们可以执行硬件流量整形和硬件帧、我将详细了解 NDK。

    但是、除了在 avb2nsp.c 和 avbtp.c 内执行的 API 调用之外、我想询问是否有必要的注册步骤或其他配置来使用 NSP?

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

    如果我们可以执行硬件流量整形和硬件帧、我将详细了解 NDK。
    >>目前不支持此功能。 使用 AVb2nsp 类接口的方法是正确的、因为您需要这些功能。

    但是、除了在 avb2nsp.c 和 avbtp.c 内执行的 API 调用之外、我想询问是否有必要的注册步骤或其他配置来使用 NSP?
    >>是的、在使用 fillpacket 函数之前、您需要注册/打开 talker。 请检查 utils\avbtp_test\server\j6ece\MPU 中的 AVB 应用示例
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    >>是的、在使用 fillpacket 函数之前、您需要注册/打开 talker。 请检查 utils\avbtp_test\server\j6ece\MPU 中的 AVB 应用示例

    感谢您提供此信息。

    我是否可以进一步查询调用此 platform_init 函数的时间?
    对于 TI 的 avbtp 栈、links_FW 在哪个点调用这些函数来注册 avbtp Tx 任务?

    我试图找到、但似乎模块甚至没有包含在构建流程中。
    此外、由于它在"util"下、我认为它不是强制性的。 请提供建议。  

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

    对于 AVB、我们在链路创建/停止时间期间调用 AVB init/deinit 函数。 请参阅 vision_sdk\links_fw\src\rtos\links_common\AVB_Rx\avbRxLink_drv.c 中的 AvbRxLink_drvCreate
    与 Tx 类似、它在 avbTx 链路中完成。

    在 utils 中、我们保留示例应用程序。 我建议您参考 AVB 封装中的示例应用。 您可以参考该链接或 AVB 链接。
    如果您希望在 VSDK 中添加支持并希望从链接中调用 AVB 链接、则 AVB 链接会更好。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Prasad、

    我明白了。

    我们已经为库提供了相应的 vision_sdk\links_fw\src\rtos\links_common\AVB_TX。
    在创建和启动期间也会调用 init/deInit API。

    该链接已连接到我们的测试用例。 XXXLink_drvCreate()已经被调用,并且也从链接到我们的库中调用 xxx_talker_open() API。

    我们还将从前面的 Encode Link 获取到 Tx Link 的数据、并确认该库也会接收数据。

    与 avbtp.c 和 avb2nsp.c 类似、我们已经初始化了 CPDMA Tx 通道。

    主要区别在于、到目前为止、我们将虚拟数据而非实际数据传递给 CPDMA 提交。

    由于我们的流程和实现在很大程度上类似于 AVB_TX 链路和 avbtp 库的流程和实现、我们假设虚拟数据将传输到网络。
    #通过我们确认 AVB_TX 工作正常的方式、数据包被发送到网络。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据我现在的理解、如果我们使用您的 avbtp 建立流量、即使数据包是虚拟数据、也不会有任何问题。
    我现在再次查看我们的代码。
    并尝试在 GMACSW 和 CPDMA 内部执行跟踪以了解内部情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Norman San、

    是的、您可以保持您的流程与 AVBTP 相似。

    想知道为什么需要跟踪 GMACSW 和 CPDMA? 您无需了解内部详细信息、因为对于您的应用、只需打开新的 CPDMA 通道(请参阅 avb2nsp.c)
    您的流程如下所示
    1.开放式通话器
    答:Talker 会为您的流量打开新的 CPDMA 通道
    b.进行其他配置、如否 描述符、数据包缓冲器等
    2.启动通话器
    3、将缓冲器转至 talker

    请告诉我是否需要任何澄清。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Prasad、

    我计划在 GMACSW 和 CPDMA 中进行跟踪、因为我们的应用程序已经执行您提供的流程。 我们已经从 avb2nsp.c 中进行了构建

    在 GMACSW_ioctl (hrtp_PROC->hGMACSW、GMACSW_IOCTL_CPDMA_SUBMIT 数据包之后,...) 网络接口不会输出任何内容。
    GMACSW_ioctl 也返回0 (无错误)。


    我还没有提到、与我之前的所有查询一样、我们使用旧版 makefile 来包含库和 TI 库之间的链接。
    在本例中、我们在 makefile 文件中添加了以下内容:

    include_external_interfaces = XDC BIOS PDK NSP NDK EDMA


    此方法是否可以将正确的 GMACSW 和 CPDMA 库链接到我们的库?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Prasad、

    我在列表中添加了 NSP_gmacsw、现在我可以通过网络看到虚拟数据包。
    非常感谢您的支持。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    诺曼-桑、

    有趣! 如果库在应用程序中未正确链接、则应出现构建错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我也有相同的理解。 并对结果感到惊讶。
    如果我将来有额外的时间、我想了解问题到底是什么、但现在这个问题已经解决了。

    一如既往、感谢您的持续支持和反馈。