C言語 リンカスクリプトを書いてみる
H8マイコンにて自作OSをつくっています。
その中で、よくわからないC言語備忘録をつけています。
しかも自作OSでブートローダも作成するので、普通にC言語でアプリケーションを作るのとはわけがちがうくて、自分でメモリ管理もしないとダメなわけです。
例えば静的変数をH8組み込みボードへ展開するとき、クロスコンパイルという手法で行うのですが、H8マイコン上のROM上へ自作OSのプログラムを展開するわけです。
そうなると静的変数とは、値が後で変わる可能性もあるのですが、ROMに展開するとなるとROMって、Read Only Memeory(今回使っているH8マイコンはフラッシュROMなので書き込みは事実上可)なので、変数が変わってはだめなわけです。
なのでROM上に展開できないので、プログラムをコンパイルする時点ではROM上の.dataが.bssに展開して、実行時にRAMに展開するという荒技をしなくちゃいけないわけです。
そのために、どうメモリを使うかをコンパイルのリンカスクリプトで設定するなども必要になってくるわけです。
下記に詳しく組み込みC言語でのりんかスクリプトが詳しくのっていたので、メモメモ。。