SH7750R C++ Resetについて

いつもお世話になります。

現在アルファープロジェクト社製のMS104-SH4を使用してプログラムしており

開発環境はHEW 使用言語がC++になります。

 

現在プロジェクトを新規で作成してデバッガーXsSightEvoを使用して書き込んでデバッグしようとしたら

PowerON_Reset関数が呼ばれる前にManualResetに毎回入り、ResetHandlerから処理が始まり

またManulaResetが呼ばれるようになります。

調査すると、

・C言語でプロジェクトを作成した場合、正しくmain関数まで呼ばれる。

・C++言語プロジェクトを作成した場合のみ、上記事象が発生する。

・C++言語で、ManualResetが呼ばれる原因を見ると、一般例外(アドレスFF000024番地(EXPEVT)に20のエラーコードが設定)が発生している?と思われます。

 (C言語のときはアドレスFF000024番地は0になっている。)

何かわかりましたらご教示お願いします。

  • 追記:
    C言語でプロジェクト作成したmain関数に、何かしらのレジスタ設定を1行でも入れて書き込むと
    reset処理がループして呼び出されるようになります。
    このときのエラーコードは00E0でした
  • 追記:
    C言語でプロジェクト作成したmain関数に、何かしらのレジスタ設定を1行でも入れて書き込むと
    reset処理がループして呼び出されるようになります。
    このときのエラーコードは00E0でした
  • 追記:
    C言語でプロジェクト作成したmain関数に、何かしらのレジスタ設定を1行でも入れて書き込むと
    reset処理がループして呼び出されるようになります。
    このときのエラーコードは00E0でした
  • わわいです
    ウオッチドッグが働いてリセット信号入ってないですか?
    また、HEWのプロジェクトはSHツールチェインを使用するようになってますか?
  • わわいさん
    回答ありがとうございます。
    デバッガー上の周辺レジスタ(WTCSR)はすべて0になっておりました。
    HEWのプロジェクト設定でツールチェインを確認しました。
    (使用いているCPUはSH7750R ツールチェインはSuperH RISC engine Standard Toolchainになっております。)
    以上よろしくお願いいたします。
    SH7750Rは内部のROM、RAMの設定がないため、外部ROMにプログラムを書き込んでいるのですが
    FlashROM(intel)の型式、バス幅設定(16bit)、ベースアドレス(00000000)にしております。
  • 10年近く前にMS104-SH4ではないけどSH7750を試したことがあります。起動させて汎用ポートのみ操作で終わってます。サンプルがあったので、大枠は自分で作成しておりません。HEWのワークスペースフォルダとハードウエアマニュアルが残っていたので、内容を見ると、

    1.ハードウエア―マニュアル 2.6処理状態 (1)リセット状態 に "RESET 端子がローレベルに変わるとリセット状態になります。MRESET 端子がハイレベルのときパワーオンリセット状態になり、MRESET 端子がローレベルのときマニュアルリセット状態になります。" とあります。デバッガXsSightEvoは経験がなく、検索してもヒットしないのでよくわかりませんが、MRESET 端子をコントロールしていませんか?CとC++で設定を変えてませんか?

    2.私の持つサンプルプログラムでは、PowerON_ResetからHardwareSetupやmainを呼び出してます。Manual_ResetからPowerON_Resetを呼び出してます。Manual_ResetとPowerON_Resetの処理内容は相互に呼び出しているようなことはありませんか?