RL78/F14でのセクションの設定について教えてください。
未初期化変数を指定したアドレスに配置したいと思い、CS+のメモリ・マッピング・プロファイラのセクション設定で、
セクションを追加しました。
セクション設定で作成したセクションをCファイルで指定して変数を配置したのですが、下記のように記述されたいいでしょうか?
#paragma section mysection
iint i;
int j;
#parama section default
よろしくお願いいたします。
わわいです
RL78はまだ使ったことはないですが、、
特別の設定がない場合、未初期化変数のセクション名は決められてまして、昔のルネサスコンパイラならB、GCCとかなら.bss、という名前になっています
そこらへんはお使いのコンパイラの取説を読めば書いてありますんで読んでみましょう。
#また、section疑似命令の使い方なんかも書いてます。
ってことで、コンパイラ/リンカの設定で、それらのセクションのアドレスを設定してやれば、お望みのことができるかと思いますがどうでしょうか。
#GCCの場合はリンカスクリプトとか書きますね
ソースのセクション設定名と実際に付けられるセクション名は違っている場合(前になんかついたり後ろになんかついたり)があるので、コンパイラの取説や、MAPファイルなどを参照して確かめましょう。
そういう場合はいくら設定名でアドレス設定などしても、名前が違う/存在していないというワーニングが出ます
また、変数エリアを別のセクション名にすると、起動時の初期化の対象外となります。自前で初期化するコードを書く必要が出てくるので注意しましょう。
ほやさん、わわいさん
ありがとうございます。問題が解決しました。
CS+のセクション設定ではセクション名を”mysec_n”として、Cファイルでの記述は、
#pragma section bss mysec
int mydata;
#pragma section
とする必要がありました。
とても助かりました。また何かあったらよろしくお願いします。