スクリプト
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のアドレス