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