0
在裸机项目中,我需要将ROM段的起始地址写入专用地址。什么到目前为止,我发现是这样定义的链接描述:如何将一段的起始地址写入ROM中的专用地址
MEMORY{
ROM (rx) : ORIGIN = 0x00018000, LENGTH = 0x8000
UICR (r) : ORIGIN = 0x10001000, LENGTH = 0x400
}
SECTIONS {
.bootloader_addr 0x10001014 :
{
KEEP(*(.bootloader_addr))
} > UICR
}
,并确定将被放置在值在0x10001014我可以在一个C++文件中添加以下地方:
std::uint32_t uicr_bootloader_start_address
__attribute__((section(".bootloader_addr"),used)) =
0x18000;
有人有一个想法,我可以如何避免必须声明常量整数并使用链接器直接将代码段的startadress写入0x10001014
?
谢谢,这就像一个魅力。不,我必须弄清楚,如何评估ROM MEMORY的起始地址,所以我不必复制起始地址。 – 2014-10-30 09:02:42
@TorstenRobitzki我认为你应该可以做到这一点,只需在'ROM'区域放一个符号'rom_start_address',然后'LONG(rom_start_address)'? – hcs 2014-10-30 09:14:59
我会明天尝试,并报告是否有效。我试过类似LONG的东西(ADDR(ROM)) – 2014-10-30 19:42:15