0

ベア メタル プロジェクトでは、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か?

4

1 に答える 1

1

私はこれを自分で使用したことはありませんが、4 バイトのリテラルをバイナリに挿入するコマンドldをサポートしています。LONG(expr)

于 2014-10-30T08:32:40.280 に答える