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.

[参考译文] TMS320F3.8377万D SDFM与双核之间存在冲突?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/572435/tms320f38377d-conflict-between-sdfm-and-dual-core

您好,

我 对SDFM进行编程以测量电压。 配置为 :SD2, EPWM8 12,5MHz SD时钟。

在 CPU1上使用简单闪存时,我可以正确管理和读取数据,即我要测量的电压。

当使用我的第二个CPU内核(CPU2)通过IPC和串行链路传输此电压值时,我 在每个位置都得到一个0,包括在SDFM驱动程序中。

我一直 在使用IPC和串行链路来处理许多消息,因此我知道它们都 工作正常。 当我的电压保持为0时,其他数据也会正确传输。

SDFM和双核之间是否存在任何已知问题? 还是SDFM和IPC?

谢谢!

Pierre-Axel。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以下分析:
    我用于发送SDFM的外部(全局)变量可在地址0x0C000的".map"中找到,该地址是IPC用于CPU间通信的RAM_MSG0的地址。
    这可以解释我的问题。
    如何使我的数据不在RAM_MSG0区域中声明?
    为什么我使用2个CPU和IPC时却声明了它?

    此致,
    谢谢!
    Pierre-Axel。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这说明了问题所在。
    我减少了几个缓冲区的大小,现在一切都恢复了。
    如何保护RAMSG0,使其成为IPC的保留区域?

    此致,
    谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果要保留GS0 RAM,可以编辑链接器命令文件。 查看书帖部件并删除对RAMGS0的任何引用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,非常清楚:我的共享RAM是RAMSG0
    例如,在my.cmd文件中,我现在拥有:


    .ebss :>> RAMLS5 | RAMGS0 | RAMGS1 页面= 1.
    esysmem :> RAMLS5 页面= 1.

    我应该删除“RAMMSG0”和“RAMGS1”,并具有:

    .ebss :>> RAMLS5 | RAMGS1 page = 1.
    esysmem :> RAMLS5 页面= 1.

    我还拥有:
    Filter_RegsFile :> RAMGS0, 第= 1页

    我应该删除“RAMMSG0”并具有:


    Filter_RegsFile :> RAMGS1, 第= 1页

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

    您好,

    [引述]我还有:
    Filter_RegsFile:> RAMGS0,页面= 1

    我应该删除“RAMMSG0”并具有:


    Filter_RegsFile:> RAMGS1,页=1

    您正在使用"RAMGS0"和"RAMMSG0"。 请注意,两者都是不同的RAM。 RAMGS0是全局共享RAM,其中RAMMSG0消息RAM用于 IPC。 请澄清此问题,以便更好地了解问题。

    此致,

    Vivek Singh

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

    是的,假设LS5和GS1有足够的内存来存储全局变量,则应该可以。

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

    当我查看时
    在RAMSG0的.cmd文件中,我有地址0x00C000
    在IPC代码中,#define GS0SARAM_START 0xC000 //启动GS0 SARAM

    最后在.cmd文件中:SHARERAMGS0 :> RAMGS0, 页=1

    然后我假设“RAMGS0”和“RAMMSG0”是相同的。
    我的IPC在RAMSG0内存部件中有数据后就无法正常工作。

    请您冷静一下吗?


    谢谢!
    此致,
    PA
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我查看时
    在RAMSG0的.cmd文件中,我有地址0x00C000
    在IPC代码中,#define GS0SARAM_START 0xC000 // GS0 SARAM的开始

    最后在.cmd文件中:SHARERAMGS0 :> RAMGS0,页=1

    然后我假设“RAMGS0”和“RAMMSG0”是相同的。
    我的IPC在RAMSG0内存部件中有数据后就不能正常工作。

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

    您好,

    请参阅"表6-1。 C28x Memory Map” ,以查看不同RAM的地址。 有不同的共享RAM,如果GS0用于IPC数据,则可以使用GS1或其他GSX RAM来处理数据。

    此致,

    Vivek Singh