RL78/F14でのセクションの設定について教えてください。
未初期化変数を指定したアドレスに配置したいと思い、CS+のメモリ・マッピング・プロファイラのセクション設定で、
セクションを追加しました。
セクション設定で作成したセクションをCファイルで指定して変数を配置したのですが、下記のように記述されたいいでしょうか?
#paragma section mysection
iint i;
int j;
#parama section default
よろしくお願いいたします。
わわいです
RL78はまだ使ったことはないですが、、
特別の設定がない場合、未初期化変数のセクション名は決められてまして、昔のルネサスコンパイラならB、GCCとかなら.bss、という名前になっています
そこらへんはお使いのコンパイラの取説を読めば書いてありますんで読んでみましょう。
#また、section疑似命令の使い方なんかも書いてます。
ってことで、コンパイラ/リンカの設定で、それらのセクションのアドレスを設定してやれば、お望みのことができるかと思いますがどうでしょうか。
#GCCの場合はリンカスクリプトとか書きますね
> そこらへんはお使いのコンパイラの取説を読めば書いてありますんで読んでみましょう。この辺ですね。コンパイラ言語仕様 - 拡張言語仕様 - コンパイラ出力セクション名の変更(#pragma section)https://tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/latest/CS+.chm/Compiler-CCRL.chm/Output/ccrl04c0206y0008.htmlnear/far やら セクション種別やら結構複雑なので、実際リンクしてみてどんな感じになっているかmapファイルで確認すると良いと思います。
わわいさん、ほやさんアドバイスいただきありがとうございます。マニュアルや他の方の質問から下記のようにすればいいのではと考えています。
#pragma section bss mysecint mydata;#pragma section
CS+のセクション設定でセクション(mysec)を作成していますが、下記のワーニングが出て困っています。
W0561100メッセージに出力されているセクション名が、リンカの-startオプションで指定されているがそのセクションが存在しない。
CS+でセクションを作成しているのになぜこのワーニングが出てくるのかが分かっていません。もう少し調べてみて分からなければサポートの方にも質問してみようと思います。
mapファイルを見ると、#pragma section bss mysecで作られるセクション名が ”mysec_n” になっているので、-start オプションにも _n 付きで設定するかワイルドカード(mysec*)にするかですかね。セクション名の後ろに何が付くかもマニュアルの #pragma section の項に書いてあるので読んでみてください。