GCC:无效的文字常量:池需要更近

时间:2016-04-20 10:14:08

标签: gcc arm

我正在尝试为armv4t芯片编译这个内联代码,

asm ("LDR   R2, =a1");

gcc回复说

无效的文字常量:池需要更近

我试图在功能附近移动a1,但仍然是同样的错误。

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

刚从ARM网站(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0041c/Babbfdih.html)窃取:

  

从pc到文字池中的值的偏移量必须小于4KB。您有责任确保范围内有文字池。有关更多信息,请参阅LTORG指令。

所以可能变量a1被定义在这个4k之外的某个地方,这就是汇编程序认为无效的所以它会生成错误信息。

http://www.freertos.org/FreeRTOS_Support_Forum_Archive/February_2006/freertos_ARM_Error_invalid_literal_constant_pool_nee_1448037.htmlARM + gcc: don't use one big .rodata section

有更多信息

其他一些来源(http://www.mikrocontroller.net/topic/68111 - 德语)建议将标志-ffunction-sections添加到编译器中。