我正在使用基于gcc的工具链在嵌入式处理器上开发c应用程序。在我的应用程序中,我需要在特定的内存位置放置一个标志。我需要帮助使用链接器命令文件语法来完成这个任务。
在您的C文件中编写类似以下内容:
static int flag __attribute__ ((section (".flag"))) __attribute__ ((__used__)) = 6;
在你的自定义链接脚本中,将.flag添加到所需的节(section)中:_flag_start = 0x00001234;
.flag _flag_start :
{
KEEP(*(.flag)) ;
}
请务必将此内容添加到正确的位置,因为位置指针只能不断增加。此块执行后,位置指针将设置为_flag_start + [您的标志的大小]
,这意味着所有后续部分都将放置在该地址或更高地址。
当然,阅读并使用David Grayson提供的手册。
我曾经在Cortex-M3上做过这个。我的链接脚本又长又复杂,也很私密,但是这个页面帮助我写了它,你也可能会发现它有用:
我建议找到编译器默认使用的现有链接脚本,然后通过在特定地址添加一个特殊的部分并在源代码中将你的标志放入该部分来修改它。