有什么理由不增加 MCU 上的 .bss 或 .data 部分大小?

Any reason not to increase .bss or .data section size on MCU?

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

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

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

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

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

来自 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 文件中指定。我看不出这种方法比第一种方法有任何优点或缺点