
最近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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- C言語・C++・C# 【CASLプログラム】 定数(80と55)を確保し、その和をGR1に、その差をGR2に求めるCASL 1 2022/12/16 01:17
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- Windows 10 【PC】デュアルディスプレイ利用時に2画面分で最大化できる? 3 2023/03/22 01:45
- Windows 8 win8 "ベータ ワールドワイド言語サポートで Unicode UTF-8 を使用"を出したい 2 2023/05/23 19:57
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- 数学 重積分の積分領域について D={(x,y)∈R^2 | 0≦y≦x≦∞} で表される領域で、∫[0→ 3 2023/05/05 23:33
- Windows 10 ストレージセンサーについて 1 2022/06/07 10:32
- 物理学 示すように,真空中の直交座標系を考える。y平面に平行な つ領域Iと領域Iがあり,軸上の領域Iと領域I 1 2023/06/25 14:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリが不足しています(VBA)
-
ExitProcessの関数コールについ...
-
VBAの配列サイズとメモリに関して
-
クイックソート
-
C言語で、メモリを解放しないで...
-
ファイルマッピング関数で失敗
-
エクセル キャッシュメモリー...
-
C,C++プログラムの強制終了時の...
-
ファミコンって8ビットしかない...
-
「ヒープサイズの設定」て何?
-
メモリのセグメント違反の解決...
-
使わなくなった変数に違う値を...
-
メモリを解放しないとどうなる?
-
メモリ不足
-
大容量のメモリ確保をスワップ...
-
「memcpy」と「strcpy」について
-
C言語:関数のメモリ上でのサイ...
-
組み込み系でのmallocについて
-
エクセルVBA 大容量CSVファイル...
-
ReadEventLogについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリ不足
-
メモリが不足しています(VBA)
-
「ヒープサイズの設定」て何?
-
メモリのセグメント違反の解決...
-
バッチファイルでの実行EXEのメ...
-
VB.netでUSBメモリの固有I...
-
EXCEL-VBAにてADOのレコードセ...
-
エクセルのメモリ使用状況/Appl...
-
「memcpy」と「strcpy」について
-
エクセルVBA 大容量CSVファイル...
-
ファイルマッピング関数で失敗
-
大容量のメモリ確保をスワップ...
-
GetAdapterInfoによりマックア...
-
C言語における再帰呼び出しの...
-
C++のCopyFileでメモリが増える
-
メモリを解放しないとどうなる?
-
クリスタルレポートでメモリ不...
-
closeとメモリの開放について
おすすめ情報