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