最近H8/3694Fを使ってマイコンの勉強をしております。
HEWを使ってコンパイルするときのセクションの設定に
ついて質問があります。
プログラム・セクションの設定を一通り終え、ビルドすると
「L2321 (E) section "S" overlaps sction "P"」
とエラーメッセージが出てしまいました。
色々調べてみるとSはスタック領域、Pはプログラム領域
でこれに重なりができてしまっているようなのですが、
これ以上どうしてよいのかわからず困っています。
おそらくセクション設定を変更すればよいと思っていますが
プログラム領域にどれくらい、スタック領域にどれくらい
を配置すればいいというのはどうやって求めればよいのでしょう?
HEWのメモリマップを表示させて見る方法があるようですが
見てもいまいちわかりませんでした。
使用環境:OS:WindowsXP、HEW4.04.01.001
以上、追記補足いたします。詳しい方教えていただけないでしょうか
No.2ベストアンサー
- 回答日時:
実際のリンク結果のアドレスマップは、「Standard Toolchain」の最適化リンカのオプションを変更すれば出力できるはずです。
「リンクマップファイル」がキーワードでマニュアル等を探してみてください。うまく行けば、[プログラム名].mapの名前で作成されるはずです。
>「L2321 (E) section "S" overlaps sction "P"」
RAMで実行する設定にしたなら、このエラーも納得です。
プログラムが本当に大きすぎるんだと思います。
>0X0000FE80 S
となっていますので、設定を変えていないと0x100サイズのスタックが取られるらしいので、0xFD80-0xFE80はスタックになります。
プログラムの部分のPセクションが、0xFD80を超えてしまっていると思いますよ。
私が試したときはリンクがうまく行かない場合、
mapファイルはエラー文のみ書かれており割り当てが
どのようになっているかはみることができませんでした。
マイコンの教科書だけでなくマニュアルを探してじっくり
読んでみます。
1点、スタック領域は補足の通り0xFB80から指定してあります
のでデフォルト状態で0x100のスタック領域が確保された場合
0xFE80~0xFF80がスタック領域となるのではないでしょうか?
こちらもマニュアルを探してみます。
お礼が遅くなってしまいましたが誠にありがとうございました。
No.3
- 回答日時:
あっ、そうですね。
0xFE80~0xFF80です。0xFF80からは内蔵IOレジスタ群になるのでメモリとして使えません。プログラムの領域としては、0xF880~0xFB80と定義されていますので768バイト以内か確認してください。特にconstとかで配列を取るとすぐ無くなります。
プログラムコード用としてもかなり狭いので確認をしてみてください。一部プログラムを削ってコンパイルしてみるのも方法です。
しばらくインターネットへ接続できなかったので
連絡が遅くなってしまいました。
色々アドバイスいただきありがとうございました。
もう一度マニュアル・プログラムを見直してみます。
ありがとうございました。
これにて質問を閉じさせていただきます。
No.1
- 回答日時:
H8は日ごろ使ってないですが、まずH8/3694Fのデータシートとマイコン基板のマニュアルを見て、内蔵ROMとRAMと外部RAMのアドレスを確認すること。
特にプログラムをROMに書くのか、RAMで実行するかで話が違ってきます。次にHEWのセクションの設定を確認します。
調べた所、「ビルドメニュー→H8S,H8/300 Standard Toolchain」にあるみたいです。
メモリマップの一覧も補足して貰えると何かコメント出来るかもしれません。
この回答への補足
ご回答ありがとうございます。
現在渡井の環境では、ROMにはモニタプログラムを
入れておいてプログラムはRAMで実行しています。
アドレスとセクションはそれぞれ下記のように
設定しています。
0x0000F840 CV0
0X0000F880 PResetPRG,P,C,C$DSEC,C$BSEC,D
0X0000FB80 B,R
0X0000FE80 S
「ビルドメニュー→H8S,H8/300 Standard Toolchain」
は見てみましたがどの設定でどのアドレスにリンクされた
という情報を見ることができませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリの解放の仕方
-
PIC 文字 を 数値に 変換
-
if ( a & b == b )
-
ファイルマッピング関数で失敗
-
メモリが不足しています(VBA)
-
メモリ不足
-
ExcelのVBAでメモリ解放できない
-
C言語初心者です。debug assert...
-
変数をあなたの身近なものに例...
-
main関数内のローカル変数につ...
-
「memcpy」と「strcpy」について
-
領域の確保の限界?
-
メモリの解放について VB6 VBA
-
解放と開放 漢字について
-
メモリのセグメント違反の解決...
-
動的メモリとexit(C言語)
-
ReadEventLogについて
-
大容量のメモリ確保をスワップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
C言語における再帰呼び出しの...
-
メモリ不足
-
「ヒープサイズの設定」て何?
-
動的メモリとexit(C言語)
-
エクセルのメモリ使用状況/Appl...
-
大容量のメモリ確保をスワップ...
-
【C言語】再帰が時間がかかる...
-
バッチファイルでの実行EXEのメ...
-
メモリのセグメント違反の解決...
-
「memcpy」と「strcpy」について
-
ExcelのVBAでメモリ解放できない
-
これて逆じゃないですか?
-
メモリを解放しないとどうなる?
-
ファイルマッピング関数で失敗
-
エクセルVBA 大容量CSVファイル...
-
メモリアロケーション異常の発...
-
エクセル キャッシュメモリー...
-
Apacheでバーチャルホストの最...
おすすめ情報