CC-RL/CC-RX/CC-RHでVisual Studioの__debugbreak()機能のようなものを作って試してみようと思います

こんにちは。NoMaYです。

昔、Windowsアプリケーションを作っていた頃、WindowsのDebugBreak()というAPIでブレークポイントを(諸般の事情で)手作業でソースに書いていたことがありました。別スレッドの案件でちょっとそのことを思い出しましたので試してみることにしました。

Google検索: Windows OR VisualStudio DebugBreak OR __debugbreak
www.google.com/search?q=Windows+OR+VisualStudio+DebugBreak+OR+__debugbreak&num=50
 

Parents
  • こんにちは。NoMaYです。

    あとCC-RHでも試してみました。(といっても、実機を持っていないのと、これまでのことからルネサスシミュレータの場合であっても実機とは相応の動作の違いがあることが分かっていますので、どちらも動作させることはしていなくて、単にビルドしてみただけです。すみません。)

    CC-RHの特別な点(というかRH850の特別な点)としては、ブレークポイントの命令コードが命令セットの1つの命令としてニーモニック記述出来ることです。(ちなみに、脱線しますけれども、RH850の他の興味深い点として、トレースデータ出力ポートにデータを出力する機能が命令セットレベルで存在していることです。関連リンクの最後にCS+のオンラインヘルプへのリンクを書きました。) 最初に書いた理由により動作を試すことまではしていないのですけれども、以下のインラインアセンブラ関数をビルドすることが出来たことと、以下のエミュレータのユーザーズマニュアルの記載から考えても、たぶん実機で動作するのではないだろうかと思います。

    #pragma inline_asm __debugbreak
    static void __debugbreak(void)
    {
        dbtrap
    }

     
    E1/E20エミュレータ,E2エミュレータ ユーザーズマニュアル別冊 (RH850/F1KH,RH850/F1KMグループ接続時の注意事項)
    www.renesas.com/jp/ja/document/mat/e1e20-emulator-e2-emulator-additional-document-users-manual-notes-connection-rh850f1kh-and-rh850f1km#page=23

    4.1 実デバイス動作とE1/E20/E2エミュレータ接続時動作の相違に関する注意

    No.1 DBTRAP命令

    DBTRAP命令はソフトウェアブレーク機能に使用するため、プログラムには使用できません。


    ちなみに、この注意事項はRH850の別のマイコンでは記載されていませんでした。同じ命令だとは思うのですけれども。

    E2エミュレータ、IE850A ユーザーズマニュアル別冊 (RH850/E2xシリーズ接続時の注意事項)
    www.renesas.com/jp/ja/document/mat/e2-emulator-ie850a-additional-document-users-manual-notes-connection-rh850e2x-series#page=28

    5.3 実デバイス動作とエミュレータ接続時動作の相違に関する注意事項


    [関連リンク]

    エミュレータのユーザーズマニュアルやCS+のオンラインヘルプに「RH850G3M/G3MH/G3K/G3KH ユーザーズマニュアル デバッグ命令編」というものが存在するような記載があったのですけれども、残念ながら、見付けられませんでした。そこで、RH850では無くV850のドキュメントですけれども、DBTRAP命令のページを探してみました。

    V850ES 32ビット・マイクロプロセッサ・コア アーキテクチャ編
    資料番号 U15943JJ4V1UM00 (第4版) 発行年月 March 2010 NS
    (C) NEC Electronics Corporation 2002
    www.renesas.com/jp/ja/document/mat/v850es-architecture#page=146

    6. 2. 3 ディバグ・トラップ
    ディバグ・トラップは,DBTRAP命令の実行,またはディバグ機能のトラップにより発生する常時受け付けが可能な例外です。
    ディバグ・トラップが発生した場合,CPUは次の処理を行います。


    V850E2 32ビット・マイクロプロセッサ・コア アーキテクチャ編
    資料番号 U17135JJ1V1UM00 (第1版) 発行年月 June 2004 NS CP(K)
    (C) NEC Electronics Corporation 2004
    www.renesas.com/jp/ja/document/mat/v850e2-architecture-preliminary#page=198

    6. 2. 3 ディバグ・トラップ,ディバグ・ブレーク
    ディバグ・トラップ,ディバグ・ブレークは常時受け付けが可能な例外です。
    ディバグ・トラップは,DBTRAP 命令の実行により発生します。
    ディバグ・トラップ,ディバグ・ブレークが発生した場合,CPU は次の処理を行いディバグ・モニタ・ルーチンへ制御を移し,ディバグ・モードに移行します。


    RH850の他の興味深い点の、トレースデータ出力ポートにデータを出力する命令、に関しては以下に記載があります。

    top > RH850 > デバッグ・ツール編 > 機能 > 実行履歴の収集 > デバッグ命令を埋め込んで情報を出力する
    2.14.10 デバッグ命令を埋め込んで情報を出力する
    tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V8.09.00/CS+.chm/DebugTool-RH850.chm/Output/db_kinou_func28.html
     

Reply
  • こんにちは。NoMaYです。

    あとCC-RHでも試してみました。(といっても、実機を持っていないのと、これまでのことからルネサスシミュレータの場合であっても実機とは相応の動作の違いがあることが分かっていますので、どちらも動作させることはしていなくて、単にビルドしてみただけです。すみません。)

    CC-RHの特別な点(というかRH850の特別な点)としては、ブレークポイントの命令コードが命令セットの1つの命令としてニーモニック記述出来ることです。(ちなみに、脱線しますけれども、RH850の他の興味深い点として、トレースデータ出力ポートにデータを出力する機能が命令セットレベルで存在していることです。関連リンクの最後にCS+のオンラインヘルプへのリンクを書きました。) 最初に書いた理由により動作を試すことまではしていないのですけれども、以下のインラインアセンブラ関数をビルドすることが出来たことと、以下のエミュレータのユーザーズマニュアルの記載から考えても、たぶん実機で動作するのではないだろうかと思います。

    #pragma inline_asm __debugbreak
    static void __debugbreak(void)
    {
        dbtrap
    }

     
    E1/E20エミュレータ,E2エミュレータ ユーザーズマニュアル別冊 (RH850/F1KH,RH850/F1KMグループ接続時の注意事項)
    www.renesas.com/jp/ja/document/mat/e1e20-emulator-e2-emulator-additional-document-users-manual-notes-connection-rh850f1kh-and-rh850f1km#page=23

    4.1 実デバイス動作とE1/E20/E2エミュレータ接続時動作の相違に関する注意

    No.1 DBTRAP命令

    DBTRAP命令はソフトウェアブレーク機能に使用するため、プログラムには使用できません。


    ちなみに、この注意事項はRH850の別のマイコンでは記載されていませんでした。同じ命令だとは思うのですけれども。

    E2エミュレータ、IE850A ユーザーズマニュアル別冊 (RH850/E2xシリーズ接続時の注意事項)
    www.renesas.com/jp/ja/document/mat/e2-emulator-ie850a-additional-document-users-manual-notes-connection-rh850e2x-series#page=28

    5.3 実デバイス動作とエミュレータ接続時動作の相違に関する注意事項


    [関連リンク]

    エミュレータのユーザーズマニュアルやCS+のオンラインヘルプに「RH850G3M/G3MH/G3K/G3KH ユーザーズマニュアル デバッグ命令編」というものが存在するような記載があったのですけれども、残念ながら、見付けられませんでした。そこで、RH850では無くV850のドキュメントですけれども、DBTRAP命令のページを探してみました。

    V850ES 32ビット・マイクロプロセッサ・コア アーキテクチャ編
    資料番号 U15943JJ4V1UM00 (第4版) 発行年月 March 2010 NS
    (C) NEC Electronics Corporation 2002
    www.renesas.com/jp/ja/document/mat/v850es-architecture#page=146

    6. 2. 3 ディバグ・トラップ
    ディバグ・トラップは,DBTRAP命令の実行,またはディバグ機能のトラップにより発生する常時受け付けが可能な例外です。
    ディバグ・トラップが発生した場合,CPUは次の処理を行います。


    V850E2 32ビット・マイクロプロセッサ・コア アーキテクチャ編
    資料番号 U17135JJ1V1UM00 (第1版) 発行年月 June 2004 NS CP(K)
    (C) NEC Electronics Corporation 2004
    www.renesas.com/jp/ja/document/mat/v850e2-architecture-preliminary#page=198

    6. 2. 3 ディバグ・トラップ,ディバグ・ブレーク
    ディバグ・トラップ,ディバグ・ブレークは常時受け付けが可能な例外です。
    ディバグ・トラップは,DBTRAP 命令の実行により発生します。
    ディバグ・トラップ,ディバグ・ブレークが発生した場合,CPU は次の処理を行いディバグ・モニタ・ルーチンへ制御を移し,ディバグ・モードに移行します。


    RH850の他の興味深い点の、トレースデータ出力ポートにデータを出力する命令、に関しては以下に記載があります。

    top > RH850 > デバッグ・ツール編 > 機能 > 実行履歴の収集 > デバッグ命令を埋め込んで情報を出力する
    2.14.10 デバッグ命令を埋め込んで情報を出力する
    tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V8.09.00/CS+.chm/DebugTool-RH850.chm/Output/db_kinou_func28.html
     

Children
No Data