【发布时间】:2016-09-16 04:59:52
【问题描述】:
我正在开发一个使用 GCC for ARM V-4.8.3 工具链的嵌入式 C 项目。 我有一组在整个程序的生命周期中只读的查找结构。由于我的 RAM 用完了(并且有很多未使用的 Flash),因此最好将它们推入 Flash,这不会影响程序的功能。问题是如何。
一种方法是使用 GCC 提供的variable __attribute__ ((section ("TEXT")))。在这种情况下,我的代码依赖于编译器。例如,如果我想通过 Microchip 编译器使用我的代码,我需要编辑代码以移植到新环境。
我想到的另一种方法是使用链接器脚本。该结构仅在代码中声明。
在我看来,第二种方法更便携。虽然仍然需要调整链接描述文件,但对我来说它更好。是否有更通用的方法可以使代码更易于移植到将变量放入闪存的上下文中?
将它们限定为常量,意味着它们将被放入rodata 部分。不在他们“所属”的文本部分。
【问题讨论】:
-
链接器脚本也是不可移植的,并且会根据所使用的链接器而改变。