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.

[参考译文] TMS320F28035:RAML0溢出–双映射存储器与组合 RAML0+L1

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1515412/tms320f28035-raml0-overflow-dual-mapped-memory-vs-combined-raml0-l1

器件型号:TMS320F28035

工具/软件:

尊敬的 TI 支持团队:

我目前正在使用开发一个项目 TMS320F28035 并且遇到了与存储器相关的问题、希望大家有所见解。

我编写了一个利用 TMS320F28035存储器的程序。 我目前面临的是 A RAML0中的内存溢出问题 段所述的步骤。 虽然我已经尽可能地优化了该程序、但问题仍然存在。

在读取之后 C2000-2803x 技术文档 、我发现这是可能的 组合 RAML0和 RAML1 增加程序的可用存储器空间。 RAML1当前未使用。 但是、我也注意到了这一点 RAML0是双映射的 这似乎提供了 更快的执行速度 这一点至关重要、因为我的应用需要高执行速度。

因此、我想澄清几个问题:

  1. 如果我组合 RAML0和 RAML1、由于双映射特性的丧失、与仅在 RAML0 SARAM 中执行相比、我的程序是否会运行得更慢?

  2. 是否有其他解决方案来处理内存溢出问题?

非常感谢您就此问题提供建议或任何可能的解决方案。
非常感谢您的支持。


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

    器件型号:TMS320F28035

    工具/软件:

    尊敬的 TI 支持团队:

    我目前正在使用开发一个项目  TMS320F28035  并且遇到了与存储器相关的问题、希望大家有所见解。

    我编写了一个利用 TMS320F28035存储器的程序。 我目前面临的是 A  RAML0中的内存溢出问题  段所述的步骤。 虽然我已经尽可能地优化了该程序、但问题仍然存在。

    在读取之后  C2000-2803x 技术文档 、我发现这是可能的  组合 RAML0和 RAML1  增加程序的可用存储器空间。 RAML1当前未使用。 但是、我也注意到了这一点  RAML0是双映射的 这似乎提供了  更快的执行速度  这一点至关重要、因为我的应用需要高执行速度。

    因此、我想澄清几个问题:

    1. 如果我组合 RAML0和 RAML1、由于双映射特性的丧失、与仅在 RAML0 SARAM 中执行相比、我的程序是否会运行得更慢?

    2. 是否有其他解决方案来处理内存溢出问题?

    非常感谢您就此问题提供建议或任何可能的解决方案。
    非常感谢您的支持。

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

    VU、

    很抱歉我的答复太晚了。 以下回答:

    如果我将 RAML0和 RAML1结合使用、由于双映射特征的丢失、我的程序实际上会比仅在 RAML0 SARAM 中执行慢吗?

    此处的双映射是指在程序和数据空间中可用的 RAM。 对于该器件、还有额外的协处理器(即 CLA)、它们可以访问为其程序和数据显示的存储器。  默认情况下、所有存储器都映射到 C28x CPU。

    如果您不使用 CLA、那么您可以将 L0/L1 RAM 组合成链接器中的一个实体、并且性能不会受到任何影响。  该映像中不清楚的是、所有 RAM 都是双映射的;当我们添加 CLA (此器件是 C2000团队中第一个拥有 CLA 的器件)并添加这些访问时、我们忽略了保留"双映射"表示法  

    我想补充一点、您没有义务使用 L0分配整个 L1 RAM、您可以根据大小选择其中的某些部分。  如果您需要为数据变量等额外的 RAM

    是否有解决内存溢出问题的替代解决方案?

    在编译选项中、您可以查看项目的优化级别。  在我们所有的开发项目中、我们使用优化级别2作为默认值。  这将减小线性代码大小、也许足以使代码适合。

    如果您右键点击您的工程并点击底部的"options"、将显示以下对话框、然后选择"optimization"。

    您可以尝试不同的优化级别、但我再次建议您从级别2 (全局优化)开始

    还有一个滑块可以尝试并优化代码速度与大小、您也可以在这里尝试不同的设置、但我会在更改之前先尝试优化。

    最后、您会在顶部看到"configuration";我们的大多数示例工程都有两种配置:debug 和 release。  在项目菜单中、您可以添加更多配置、并为每个配置具有不同的优化和预定义。  这使您能够根据配置轻松更改编译选项和链接器选项(如果您想尝试一个位)。

    最后要注意的是、在我们的示例中、我们通常会设置编译时间 if 基于预定义的语句。  debug config 通常具有_debug 预定义、它将激活这些具有多次代码有效性检查的条件。  完成开发后、应切换到"Release"配置、因为这些调试代码行对于最终版本而言是不必要的。  我不认为 F2803x 代码像使用新器件那样使用此器件、但只是想指出这一点、以防看不到代码预期的性能。

    此致、

    Matthew