0

我有点惊讶我找不到这个问题的答案,所以我就问一下。我有一个非常大的查找表,它未初始化,因此将放置在我的 TI TMS320F280049 MCU 的 .bss 部分中。毫不奇怪,bss 部分为此太小了。

所以我想了几种方法来解决这个问题:

  1. 增加 .bss 部分大小
  2. 初始化 LUT(在我的情况下这不是必需的)并增加 .data 大小直到它适合那里。
  3. 为这个 LUT 创建一个专用的 RAM 部分(必须是 RAM,由于访问时间较慢,闪存不够用)

由于缺乏经验,我无法真正判断哪种变体最好。有什么理由不应该使用 .bss 和 .data 的部分大小?

提前感谢您抽出宝贵时间回答!

4

1 回答 1

0

来自 TI 支持的回答:

1) Increase the .bss section size

我们只使用 1 个 RAM 块来分配 bss 部分并没有什么特别的原因。这只是一个模板,对于 C2000ware 示例来说已经足够了。用于映射部分的 RAM 数量没有限制

2) Initialize the LUT (which is not really necessary in my case) and increase the .data size until it fits in there.

我在这种情况下看到的唯一缺点是,编译器会生成一个单独的部分来存储初始值。这只会增加总内存大小(初始值通常加载到闪存中)。

此外,全局变量的初始化将消耗周期。但是,如果您使用的是 EABI 格式,即使是未初始化的变量也会默认初始化为 0,因此您不会看到周期的显着差异。但是在 COFF 格式的情况下,这种方法会消耗更多的周期。

3) Create a dedicated RAM section for this LUT

这种方法也很好用。您可以使用 #pragma DATA_SECTION 使全局转到用户指定的部分,而不是默认的 .bss 部分。需要在带有 RAM 映射的 cmd 文件中指定此新部分。我认为这种方法与第一种方法相比没有任何优点或缺点

于 2021-07-02T05:45:18.320 回答