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.

[参考译文] TMS320F28379D:EtherCAT memcpy 函数

Guru**** 2522770 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1001096/tms320f28379d-ethercat-memcpy-function

器件型号:TMS320F28379D
主题中讨论的其他器件:TMDSECATCNCD379D

大家好、我有一个很疯狂的问题。  首先、我将在 F28379D 上实施 EtherCAT、并使用 TMDSECATCNCD379D 参考设计。  我正在使用 SPI 接口。  一切都运转良好(CoE、Foe、处理数据传输-无问题)。

但我遇到了字节与字的问题、让我查看 C28xxsystem.c 文件中实现的 memcpy 函数。  该函数称为 c28xx_memcpy (s1、s2、n) 、设置为将 n 个字节从 s2复制到 s1。  但是 memcpy 函数对16位字工作。  因此 、c28xx_memcpy  函数只需将 n 除以2即可调用 memcpy。  在我看来、除了 n 是奇数时、这应该可以正常工作。  

那么、假设我是对的、TI 是否假定 n 始终是偶数?  如果是、如何保证这一点?

我还签入 了.\libraries\communications\EtherCAT\f2838x\ssc_configuration\cpu1\f2838x_cpu1_system.c 文件、并注意到它使用相同的逻辑。

感谢您的帮助!

Brett

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

    Brett、

    由于接下来的三天是 TI 印度节假日、因此请预计会有一些延迟。

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

    您好、Brett、

    您的观察结果正确。 我查看了 API、它期望传入的数据是多个字(16位)、但长度以字节表示。

    谢谢、

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

    您好 Ranjith -感谢您的快速回答。  只是一个后续步骤: 当您说 API 时、您是在谈论 EtherCAT API (因此 EtherCAT 保证函数只会使用 n 偶数调用)还是 TI API (因此不保证函数始终使用 n 偶数调用)?  

    谢谢!

    Brett

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

    您好、Brett、

    我指的是 TI 包装程序 API。 由于 C28x 不是一个字节机器、因此函数期望数据是多个字中的数据。

    谢谢、