ベア メタル プロジェクトでは、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;
定数整数を宣言し、リンカーを使用してコードセクションの開始アドレスを直接書き込む必要を回避する方法を知っている人はいます0x10001014
か?