
最近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を見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリが不足しています(VBA)
-
H8 マイコン セクションの設...
-
C言語で、メモリを解放しないで...
-
組み込み系でのmallocについて
-
FindFirstFile ハンドル開放
-
VBAの配列サイズとメモリに関して
-
「ヒープサイズの設定」て何?
-
エクセルのメモリ使用状況/Appl...
-
C言語で再帰的処理が出来ない理由
-
ファイルマッピング関数で失敗
-
メモリアロケーション異常の発...
-
これて逆じゃないですか?
-
32Bit WindowsXP用アプリでメモ...
-
エクセルVBA 大容量CSVファイル...
-
Visual Studioのメモリリークに...
-
エクセル キャッシュメモリー...
-
メモリのセグメント違反の解決...
-
C++のCopyFileでメモリが増える
-
ファイルの読み込みが遅い
-
ゲームプログラミングのマップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
Access Violationについて
-
VBAの配列サイズとメモリに関して
-
メモリのセグメント違反の解決...
-
メモリが不足しています(VBA)
-
メモリ不足
-
大容量のメモリ確保をスワップ...
-
ファイルマッピング関数で失敗
-
PC-98で拡張メモリを使え...
-
エラーについて
-
「ヒープサイズの設定」て何?
-
エクセルのメモリ使用状況/Appl...
-
C言語における再帰呼び出しの...
-
オフスクリーンサーフェスへの...
-
1ページに収まるオブジェクト...
-
新規購入PCのスペックについて...
-
4GB搭載したマシンのメモリ情...
-
組み込み系でのmallocについて
-
ルネサスマイコン(R8C) ビルド...
-
Visual Basic Net2003
おすすめ情報