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です。

    ちょっと脱線しますけれども、RXマイコンもRH850マイコンのように、トレースデータ出力ポートにデータを出力する、もしくは、内蔵トレースメモリにデータを蓄積する、といったことが可能です。他方では、RH850マイコンとは違ってRXマイコンでは、そのような機能が命令セットレベルで用意されているというわけでは無く一般的なデータクオリファイトレース機能を頓知的に使って同様なことをすることになります。以前にやってみたことは以下に投稿していました。(なお、e2 studioの不具合と思われる挙動にかなり振り回されていましたので、話が分かり難くなっていたりします。)

    FIT R_SCI_RXモジュールでprintfをfrom inside interrupt routine内から行えるかどうか考えてみるスレッド
    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/9610/fit-r_sci_rx-printf-from-inside-interrupt-routine/47583#47583

    昔(大昔?)はちょっと触ってもまともには動いていない感じがして、トレース機能を必要とするようなデバッグはCS+に移ってやるようにしていたので、今までは気付きませんでした。(今回、GNURXを使う案件で、自分以外の人が使うかも知れない案件があったので、たまたま試してみて、ようやく気付きました。)

    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/9610/fit-r_sci_rx-printf-from-inside-interrupt-routine/47588#47588

    脱線ついでのその4ですけれども、先ほどの件でemWin(及び関連ドライバ)が動き出すところより前の筈のところでやってみても再現するのであれば、(リンクサイズ制限の事情で)emWinを外してCC-RXでビルドしたら再現するのか試してみました。結果は、e2 studioでは再現しましたが、同じabsファイルでもCS+では再現しませんでしたね。

    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/9610/fit-r_sci_rx-printf-from-inside-interrupt-routine/47596#47596

    脱線ついでのその6ですけれども、e2 studioでトレースデータの時間表示のモードを差分表示から積算表示にしてみたところ、期待値と異なる値が表示されている箇所はトレース機能の時間カウンタがラップアラウンドする箇所っぽいです。どうも時間カウンタは20ビット幅ではないかと推測されるのですが、そうだと仮定して手元で手計算してみると、以下の通り、期待値と同じ値が得られました。私はe2 studioの計算ミス不具合のような気がします。


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

    ちょっと脱線しますけれども、RXマイコンもRH850マイコンのように、トレースデータ出力ポートにデータを出力する、もしくは、内蔵トレースメモリにデータを蓄積する、といったことが可能です。他方では、RH850マイコンとは違ってRXマイコンでは、そのような機能が命令セットレベルで用意されているというわけでは無く一般的なデータクオリファイトレース機能を頓知的に使って同様なことをすることになります。以前にやってみたことは以下に投稿していました。(なお、e2 studioの不具合と思われる挙動にかなり振り回されていましたので、話が分かり難くなっていたりします。)

    FIT R_SCI_RXモジュールでprintfをfrom inside interrupt routine内から行えるかどうか考えてみるスレッド
    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/9610/fit-r_sci_rx-printf-from-inside-interrupt-routine/47583#47583

    昔(大昔?)はちょっと触ってもまともには動いていない感じがして、トレース機能を必要とするようなデバッグはCS+に移ってやるようにしていたので、今までは気付きませんでした。(今回、GNURXを使う案件で、自分以外の人が使うかも知れない案件があったので、たまたま試してみて、ようやく気付きました。)

    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/9610/fit-r_sci_rx-printf-from-inside-interrupt-routine/47588#47588

    脱線ついでのその4ですけれども、先ほどの件でemWin(及び関連ドライバ)が動き出すところより前の筈のところでやってみても再現するのであれば、(リンクサイズ制限の事情で)emWinを外してCC-RXでビルドしたら再現するのか試してみました。結果は、e2 studioでは再現しましたが、同じabsファイルでもCS+では再現しませんでしたね。

    community-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/9610/fit-r_sci_rx-printf-from-inside-interrupt-routine/47596#47596

    脱線ついでのその6ですけれども、e2 studioでトレースデータの時間表示のモードを差分表示から積算表示にしてみたところ、期待値と異なる値が表示されている箇所はトレース機能の時間カウンタがラップアラウンドする箇所っぽいです。どうも時間カウンタは20ビット幅ではないかと推測されるのですが、そうだと仮定して手元で手計算してみると、以下の通り、期待値と同じ値が得られました。私はe2 studioの計算ミス不具合のような気がします。


Children
No Data