Skip to content
Go back

リンカスクリプトのメモ

· Updated:

スクリプト

SECTION {
    __data_lma = .;
    .data : {
        __data_start = ABSOLUTE(.);
        *(.data .data.*);
        . = ALIGN(4);
        __data_end = ABSOLUTE(.);
    } >iwram AT>rom = 0xff
}
  • セクションを定義する
    • __data_lmaという変数のアドレスに現在位置のLMAを与える
    • .dataというセクションを定義する
      • __data_startという変数のアドレスに現在位置のVMAを絶対アドレスで与える
      • すべてのファイルの.data.data.*という名前のセクションを現在位置に追加する
      • 現在位置を4バイトにalignする
      • __data_endという変数のアドレスに現在位置のVMAを絶対アドレスで与える
    • romへリンク時にデータを格納し、そこからiwramへ実行時にコピーできるように0xffで埋めたメモリを割り当てる

アドレス

  • LMA(Load Memory Address):ロードされるときのアドレス。ここではROMのアドレス
  • VMA(Virtual Memory Address):実行時に割り当てられるアドレス。ここではRAMのアドレス