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.

[参考译文] TMS320F280025C:如果此表是库的一部分,如何独立地将大型表放在 RAM 上?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1083892/tms320f280025c-how-to-put-a-large-table-on-ram-in-standalone-if-this-table-is-part-of-a-library

部件号:TMS320F280025C

亲爱的香榭丽舍,

我是向一位客户提出这一要求的。

他使用库(对象代码),这里有一个表,比如链接器命令文件中的 FFT 部分。

在 RAM 模式下,CCS 可以将其直接加载到 RAM 中。

但是,在独立(闪存启动)中,我们如何将表放在 RAM 上?

我们尝试使用以下与 TI 用于.TI.ramfunc 的相同方法来执行闪存初始化功能。

.TI.ramfunc:load = flash_BANK0_SEC1,
运行= RAMGS0_1_2_3,
load_start (ramfunctsLoadStart),
load_size (ramfunctsLoadSize),
load_end (ramfunctsLoadEnd),
run_start (运行启动),
run_size (ramfunctsRunSize),
run_end (运行环境),
对齐(4)

类似地,代码中有内存副本。

FFT:load = flash_BANK0_SEC1,
运行= RAMGS0_1_2_3,
load_start (RambussLoadStart1),
load_size (ramfunctsLoadSize1),
load_end (ramfunctsLoadEnd1),
run_start (运行 Start1),
run_size (ramfunctsRunSize1),
run_end (运行端1),
对齐(4)

尽管已成功构建,但我们看到 FFT 部分仅放置在闪存上,而不是.map 文件中的 RAM 中。

请您告诉我们是否有任何问题,或者我们应该如何处理?

我们是否有这样的示例代码?

黄韦恩

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

    你好,韦恩,

    您是否添加了代码以将内容从加载地址复制到运行地址?

    对于 ramfunc,我们将此作为 Device_init 的一部分:

      Memcpy (&RamfunctsRunStart,&RamfunctsLoadStart,(size_t)&RamfunctsLoadSize);
    在.map 文件中,您应该看到与该部分关联的2个地址。 例如:


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

    尊敬的韦纳:

    是的,我们在代码中使用了内存副本。

    但我们后来发现,我们在冗余分配该表方面犯了一个小错误。

    校正后,扫描床正确放置在 RAM 位置上。

    谢谢你。

    黄韦恩