SH4A E10Aでのデバッグについて

E10AでSH4Aのデバッグを行なっています。
通常はフラッシュメモリ(ROM)上で動作するプログラムを開発しています。
しかしE10Aでソースレベルデバッグを行う際はDebugにてビルドを行いSDRAM上にプログラムをロードして行なっています。

そこで質問なのですが,E10AではROMに書き込んだプログラムのソースレベルデバッグは可能でしょうか?

ROM上とRAM上では動作が微妙に異なるため出来ればROM上でデバッグを行いたいのですが・・・。

ご存知のかたいらっしゃいましたらよろしくお願いいたします。
  • moonさん

     可能です。ただし、S/Wブレークは当然ながら使えません(設定しても止まりません)。H/Wブレークであれば問題なく停止します。

     また、E10A経由でフラッシュROMにダウンロードするためには書き込みプログラムの登録が必要となります。手順等はFMTOOLでWebを検索してみてください。
  • エビスクラウンさん
    アドバイスありがとうございます。
    すみませんがもう少し教えて下さい。

    下記手順でやってみましたがH/Wブレークポイントが設定出来ませんでした。
    何か基本的にやり方が間違っているのでしょうか?

    1.Releaseのコンパイラ設定-最適化をデバッグ用にしてビルド
    2.フラッシュROMに書き込み(E10Aを使わないで行なっています)
    3.E10Aを接続
    4.ソースファイルをHEW上に表示させる
    5.ソースファイル表示にソースアドレスが表示されないので
    ブレークポイントが設定出来ない

    ROMデバッグの場合PCアドレスとソースコード位置とはどうやって関連付けされるのでしょうか?

    よろしくお願いいたします。
  • moonさん

     E10Aでダウンロードを行わないと、HEWが機械語とソースの対応を知ることが出来ません。そこでダウンロードファイルに外部ROMに書き込んだロードモジュール(シンボル情報のある拡張子abs)を追加してください。
     ただし、機械語はダウンロードする必要がありませんから、「シンボル情報のみダウンロード」の設定でロードモジュールを追加ください。

     そうすればソース行にアドレスが表示され、ブレークも設定できるはずです。

     以上、確認をお願い致します。
  • moonさんへ

    以前E10A、SH4Aで開発していた者です。
    開発環境はすでに手元にないので、うろ覚えでの書込みになりますが、参考になれば幸いです。

     RAM上ではdebugコンフィグでソースデバッグされていると見受けられます。
     フラッシュROMの場合も、基本的には同じでセクション配置が異なる事になると思います。

     もし、ROM上のコードを書き換えずにソースコードデバッグが行いたいというのであれば、エビスクラウンさんのおっしゃるabsファイルからシンボルのみ読込みが必要になると思います。

    所で...開発環境はHEWなのでしょうか?


  • エビスクラウンさん

    ご教授頂いた方法でうまくいきました。
    ありがとうございました。

    具体的には下記手順で行いました。
    ビルド-SuperH RISC engineStandard Toolchain
    コンパイラ-カテゴリオブジェクトのデバッグ情報出力
    にチェック
    最適化リンカ-カテゴリ出力-デバッグ情報を出力に変更
    ビルド
    E10Aを接続
    absファイルをダウンロード(debug情報のみ)
    ソースアドレスが表示されH/Wブレークポイントが設定可能となりました。

    以前から疑問に思っていたことが解決しスッキリしました。
    今後の業務に役立てたいと思います。

    みゅーづさんもありがとうございました。