最近FSPを触り始めた者です。FPB-RA4E2 FreeRTOS版Blinkyプロジェクトのデバッグを試してるのですが、ブレーク時の動作が変?なので、もし同じ経験をされた方がいらっしゃいましたら、アドバイスいただきたいです。
■事象ステップ実行&再開を繰り返していると、ブレークポイントを設定していた位置とは別の位置*1 でブレークするようになる*2。*1 しかも、表示されるCソースは、リンクされていない関数の模様。*2 Cソース上は別の位置で表示されるが、PCの値は元々設定していた位置になっている(ので、Cソースの表示が変?)■環境・ボード:FPB-RA4E2・FSP:v5.5.0(GitHubのsetup_fsp_v5_5_0_e2s_v2024-07.exeでインストール)・プロジェクト:FreeRTOS版のBlinkyプロジェクト(Project Type:Flat) ※変更は最適化レベルを-O0にしたのみ。また、ThreadX版やHALではこの事象は発生していない■デバッグ時の手順以下のようにデバッグしているのですが、現状100%再現しております*3。1.FreeRTOS版のblinky_thread_entry.cの36行目(LEDトグルするwhileループ内の先頭行)でブレークポイントを張ってデバッグ実行2.最初のうちは、正しく1.の位置でブレークする。3.その後、ステップ実行や再開を繰り返すと、task.cの5146行目(xTaskGenericNotifyFromISR()内*4)でブレークするようになる。*3 1.のブレークポイントの位置をずらすと、3.でのブレーク位置もずれます。*4 mapファイルを見たところ、この関数はリンクされていない
私が凡ミスしてる可能性があり、何かアドバイスいただけますと幸いです。。。
> その後、ステップ実行や再開を繰り返すと、task.cの5146行目(xTaskGenericNotifyFromISR()内*4)でブレークするようになる。一般論ですが、break中もタイマや割り込みが生きている場合にはステップ実行で異常な動作になる事はあります。答えになっていないかもしれませんが、なるべくステップ実行は使わずbreakpointを張る場所を選んでデバッグすることをお勧めします。> *4 mapファイルを見たところ、この関数はリンクされていないリンク時に--gc-sectionが指定されていないと、参照されない関数でも残ります。
ソースとアドレスがずれる現象については、デバッグ構成(Debug Configuration)の画面内でダウンロード対象とするファイル(*.elf)を「イメージのみ」「シンボルのみ」に分けて登録しておき、アドレスがずれたらシンボルの方だけを手動でダウンロードするとか、バイナリが変わった時だけ手動で「イメージのみ」の方をダウンロードしてそれ以外は「シンボルのみ」だけでデバッグするなど、使い方を工夫すれば問題によっては回避可能です。
(参考) FAQ - e² studioデバッガでバイナリファイルをダウンロードする方法https://ja-support.renesas.com/knowledgeBase/20626147
Okra 様ご返信ありがとうございます。>ソースとアドレスがずれる現象については、デバッグ構成(Debug Configuration)の画面内でダウンロード対象とするファイル(*.elf)を>「イメージのみ」「シンボルのみ」に分けて登録しておき、アドレスがずれたらシンボルの方だけを手動でダウンロードするとか、そんなテクニックがあったんですね!試してみたいと思います。頂いたコメント、大変勉強になりましたm(_ _)m