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.

[参考译文] TMS320F28384D:MSGRAM 地址分配

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1215909/tms320f28384d-msgram-address-assignment

器件型号:TMS320F28384D

[28384D 的 MSGRAM 地址分配。]

由于此帖子是使用翻译工具编写的、因此内容可能不自然。

你好。
我写这封信是因为我在使用28384D 时有查询。
我希望仅使用 MSGRAM (在 CPU1和 CM 之间)而不使用 IPC 来共享数据。

每个数据由不同大小的结构组成。
CPU1和 CM 的每个内核中定义了相同的结构、只有"#pragma Data_section()"的 RAM 位置不同、一切都相同。
不过、在存储器映射中、共享 RAM 中每个结构的地址是不同的。

主要问题 Q1)在存储器映射中、是否可以通过任何方法使 CPU1和 CM 的数据顺序相同?
用户无法定义存储器映射中定义的顺序?
(我想要一种比在链接文件中拆分 MSGRAM 区域更好的方法。)

Q2)将 COFF -> EABI 更改为使用#pragma 位置(x、addr)。
除了双精度型的大小变化之外、是否还有其他需要注意的事项?

Q3)我希望使用#pragma 位置(gMENU_PQ、0x038400)将 gMENU_PQ 的结构放置在地址0x038400处、但调试后、gMENU_PQ 消失。
我是否使用它错了? 还是不可用的命令?

Q4)我知道您可以在链接文件中声明变量的地址。

在'header file'中设置'extern'后、我尝试在链接文件中插入'gMENU_PQ:>0x038000'、但这与使用#pragma 位置(gMENU_PQ、0x038400)时的症状相同。 (Q3)

该方法在 TI 编译器中不可用吗?

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

    您好!

    Unknown 说:
    主要问题 Q1)是否有办法使 CPU1和 CM 的数据顺序在内存映射中相同?

    C28x 是16位寻址、其中 M4是字节寻址、因此地址将不相同。  

    Unknown 说:
    除了 double 的大小变化外还有其他注意事项吗?

    不应该有任何问题,但你的意思是什么"双倍大小的改变"? 你在谈论.out 大小成为双倍?

    Unknown 说:
    Q3)我想使用#pragma 位置(gMENU_PQ、0x038400)将 gMENU_PQ 的结构放置在地址0x038400处、但调试后、gMENU_PQ 消失了。
    我是否使用它错了? 还是不可用命令?

    有关用法、请参阅 CPU 编译器指南。

    此致、

    Vivek Singh

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

    大家好。
    感谢您的答复。
    我很抱歉我的英语不足以在谈话中造成混乱。

    Q1 -示例) C28x 是16位寻址、其中 M4是字节寻址、因此地址将不相同。
    我已经知道这一点。
    我的问题是、在 CPU1和 CM 的存储器映射中、数据放置在地址映射中。
    为了使 CPU1和 CM 共享 RAM、每个内核中声明的数据顺序似乎必须相同。
    请再次检查发布在主线程中的图片。
    C28x 的存储器映射:gMENU_init -> gMENU_RCMU -> gMENU_PV...
    CM 存储器映射:gMENU_PQ -> gMENU_PV -> gMENU_LINE...
    我声明了相同的内容并且初始化了相同的内容。

    Q2 -回复)不应该有任何问题,但你是什么意思"双倍大小改变"? 你在谈论.out 大小成为双倍?
    当将项目选项从 COFF -> EABI 更改为其他选项时、最大的区别是 double 为32位(在 COFF 中)、而 double 为64位(在 EABI 中)。
    除此之外,我想知道是否还有其他问题值得我注意。

    Q3 -回复)有关用途、请参阅 CPU 编译器指南。
    我已经阅读了该指南并编写了一个程序。
    我知道我可以编写类似#pragma location (gMENU_PQ、0x038400)的内容。
    但是、编译时、gMENU_PQ 会从表达式、存储器映射和映射文件中消失。
    我需要一个提示来解决这个问题。

    Q4)在链接文件中声明"gMENU_PQ:>0x038000"也会使 gMENU_PQ 消失。
    是否可以指定链接文件中变量的地址?

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

    我将循环使用我们的编译器团队来提供帮助。

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

    我认为使用较新的 EABI 很实用。  在这种情况下、文章 Methods to Force a order of Global Variables 中介绍的技术 可能会很有用。

    谢谢。此致、

    -George.

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

    哇!!

    非常感谢您的帮助。
    最后、我有一个简单的解决方案来解决该问题。
    非常感谢!!!