• ベストアンサー

SH7751Rのセクション割り当てについての質問です。

SH7751Rのセクション割り当てについての質問です。 HEWを使っているのですが、それぞれのセクションをどこに割り当てれば良いのかわからず困っています。 プログラムはRAM上でデバッグしたいので、"0x8d000000"にPセクションから順番に配置しているのですが、実行途中にリセットされてしまいます。 セクションの割り当てが間違っているのか、それ以外のことが間違っているのかわからないのでどうかよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bug_bug
  • ベストアンサー率78% (36/46)
回答No.2

デバッグ時に動作しない原因はリンカによるセクション割付が不整合を起こしているため, 関数callの際に飛び先で不当命令例外によるリセットが発生している可能性が高そうです. この場合, 基本的にリンク時の問題なんですがセクション設定の説明だけでは済まない場合が多いです. 「RAM上でデバッグしたい」とのことですが, リリース時の実動作はROM上/RAM上どちらを想定していますか? 1. リリース時の実動作はROM上を想定 その場合ベンダー提供のデバッグ専用ファームウェアをROMへ書き込み, CPU実動作中に外部からデバッグ対象コードをDLする手法をお薦めします. デバッグ時のみCPUのRAM駆動が可能です. 2. リリース時の実動作もRAM上を想定 ファームウェアにアップデートの機能を盛り込む場合やROMからのフェッチでは タイミングが間に合わない場合などSH-4クラスであれば結構常用の手段です. セクションのRAM割り付け, ビルド時のROM割り付け, スタートアップ処理 の3点について理解している必要があります. どちらなのか補足して頂ければ多少詳しくアドバイス可能です. その際, デバッグ環境や使用する外部メモリについて情報があれば話が早いでしょう. RAM駆動って最初は少しハードルが高く感じるものだと思います.

kotaom
質問者

補足

どちらなのかが良くわからなくて申し訳ないのですが、環境はT-Engine搭載のSH7751RでデバッガはHI ApplicationEngine for T-Engineを使用しています。

その他の回答 (1)

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

使ったのが数年前で環境が手元に無く記憶で書いてるだけですが リンク時に何も設定しなければ各セクションはデフォルトの値が 使われたと記憶しています (その意味ではプログラムコードのトップがお使いのハード構成にきちんとあっていればそれでいいはずです) 各セクションのアドレスは使うハード構成に見合ったアドレスに配置するものであり 一般的にここでいいというものではありません >実行途中にリセットされてしまいます リンク時にアドレスが確定されるので実行時にリセットされるとかありえません リセットされると言うのは具体的にどのような現象なのですか?

関連するQ&A

専門家に質問してみよう