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:如何解决 RAM 容量紧张的问题。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1232960/tms320f28384d-how-to-solve-the-problem-of-ram-capacity-being-tight

器件型号:TMS320F28384D

您好!  

我正在使用 F28384D 开发软件。

为了提高程序的速度、将其扩展为 RAM 并进行处理、而且通过使用 USB、RAM 的容量非常强大。
所以我考虑使用外部存储器。 我认为有多个访问外部存储器的选项(EMIF、SPI 等)。

哪种访问方法最快? 另外、如果我能做些什么来解决 RAM 容量紧张的问题、请告诉我。

谢谢。

Conor

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

    我非常怀疑任何外部存储器的速度会比使用微控制器内部闪存执行程序代码的速度快。

    Unknown 说:
    请告诉我是否有任何办法可以解决 RAM 容量紧张的问题

    不要将您的所有程序代码放在 RAM 中。 应具有选择性、并仅选择必须在严格时序限制内完成的高频功能。

    使用 CCS 中的 Optimizer Assistant。

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

    Kier 对此有很好的建议,

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

    您好、Kier Vivek

    问题1:
    我有一个关于全局共享 RAM 的问题。 GSRAM0至15在链接器命令文件中定义。
    是否可以将它们组合到一个存储器区域中?

    问题2.
    该问题与 Q1相关。
    是否可以将全局共享 RAM、本地共享 RAM 和专用 RAM 组合到链接器命令文件的一个存储器区域中?

    我的问题的背景是、我需要在 RAM 中放置一个大型程序、而全局共享 RAM (128KB)可能是不够的。

    谢谢。

    Conor

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    q1.
    我有一个关于全局共享 RAM 的问题。 GSRAM0至15在链接器命令文件中定义。
    是否可以将它们组合到一个存储器区域?

    可以。

    Unknown 说:
    Q2.
    该问题与 Q1相关。
    是否可以将全局共享 RAM、本地共享 RAM 和专用 RAM 组合到链接器命令文件中的一个存储器区域中?

    是的,但几乎肯定是一个坏主意。 如果您这样做、则无法控制段的位置。 一些节有一些限制。 例如、栈必须位于第一个64KiB 中。

    我认为您需要在链接器文件中执行以下操作:

       .text            : >> RAMD0 | RAMD1 | RAMLS | RAMGS

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

    您好、Kier

    谢谢你。 我明白了。

    有些部分有限制。 例如,堆栈必须位于前64KiB。

    在哪里可以确定哪些部分有限制?

    如果您有任何文档、请与我们分享。  我想知道、因为我计划在将来对该部分进行重大改变。

    谢谢。

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

    一个好的开始是编译器手册https://www.ti.com/lit/pdf/spru514中的"4.3.6指定在存储器中分配段的位置"部分

    但还有其他外设注意事项。 例如、CLA 数据只能存储在 LSRAM 中。 据我所知、没有一个单独的文档介绍所有存储器放置注意事项。

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

    您好、Kier

    感谢您的快速帮助。

    是否即使它不是连续存储器也可以对其进行排列?

    ex). text :>> RAMGS0 | RAMGS2 | RAMGS5.

    谢谢。

    Conor

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    即使它不是连续内存,它也可以排列吗?

    是的、我相信是这样、但我不是100%确定。 您一定要尝试一下。

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

    从编译器的角度来看、我们可以这么做、但我们不建议这样做、因为 CPU 上的预取机制将增加预取的地址、如果 GS0中最后一个位置有代码、那么预取地址可能位于 GS1存储器中、如果有保护 然后、GS1 RAM 可能会生成访问违规中断。  

    此致、

    Vivek Singh