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.

[参考译文] EK-TM4C129EXL:以太网 PTPv2 (第2层 PTPv2)时间戳

Guru**** 2455360 points
Other Parts Discussed in Thread: TM4C129ENCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/638847/ek-tm4c129exl-ptpv2-over-ethernet-layer-2-ptpv2-timestamping

器件型号:EK-TM4C129EXL
主题中讨论的其他器件:TM4C129ENCPDT

您好!

我正在为 Tiva TM4C129ENCPDT 开发以太网 PTPv2 (第2层 PTPv2)。 我尝试使用 NDK 堆栈发送消息。
我使用的 NDK 原始以太网套接字编程接口具有以下功能(发送同步消息):

tEMACDMADescriptor g_psTxDescriptor[NUM_TX_descriptor];
uint32 rawether_type = 0x88F7、rawchannel_num = 1;
int val = 7.

套接字(AF_RAWETH、SOCK_RAWETH、rawether 类型);
setsockopt (sraw、SOL_Socket、SO_IFDEVICE、&rawchannel_num、sizeof (rawchannel_num));
setsockopt (sraw、SOL_socket、SO_priority、&val、sizeof (val));
SEND (sRAW、g_psTxDescriptor[ui32Loop).pvBuffer1、58、0);

发送同步消息的操作正常、但我不知道如何配置 EMAC 和 DMA 驱动程序以从8字结构的 EMACDMADDescriptor 中获取时间戳。
我想将其配置为检测帧起始并执行时间戳、以便我可以从 tEMACDMADescriptor 读取它、或者从哪里读取它?
当我使用 EMACConfigSet 等功能更改 EMAC 驱动程序中的某个内容时、具有 SEND 函数的传输将不再工作。
是否有人知道如何配置这些驱动程序?

感谢您的任何帮助。

祝你一切顺利

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    上一帖子是否有用? e2e.ti.com/.../1857342
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Bob、您好!
    感谢你的答复。 该线程使用从调用函数 EMACTimestampSysTimeGet 开始的当前时间、或通过直接从寄存器读取数据(如在那里所做的那样)来使用该时间。 但我不想使用当前时间。 我需要从检测到帧起始开始到帧并进行时间戳的时间。 TivaTmTM4C129ENCPDT 微控制器数据表(DS-TM4C129ENCPDT-15863.2743 SPMS441B)中的第23.3.2.5节增强型和备用描述符举例说明了当这些位被启用时:

    从表23-2中删除。 增强型发送描述符0 (TDES0):

    25 | TTSE:发送时间戳使能
    "置位时、该位为描述符引用的发送帧启用 IEEE1588硬件时间戳。
    该位仅在第一段控制位(TDES0[28]被置位时有效。"


    17 | TTSS:TX 时间戳
    该状态位表示已为相应的发送帧捕获了时间戳。 该位
    TDES6和 TDES7的时间戳值被置位、这些值是为发送帧捕获的。 此字段有效
    仅当描述符中的最后一个段控制位(TDES0[29])被置位时。

    但它们从未设置。

    我使用以下代码对其进行配置:

    EMACTimestampConfigSet (EMAC0_BASE、
    (EMAC_TS_PTP_VERSION_2 |
    EMAC_TS_DIGITAL_ROLLOVER |
    EMAC_TS_MAC_FILTER_DISABLE |
    EMAC_TS_UPDATE_粗糙|
    EMAC_TS_ALL)、
    40);


    EMACTimestampEnable (EMAC0_BASE);


    感谢您的任何帮助、
    此致
    Waldemar Voos