在裸机项目中,我需要将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
吗?