信頼できるデバッグ設定を取得するのに問題があります。ネット上のいくつかのフォーラムで、同様のタイトルの他のスレッドを見たことがありますが、状況は異なるようです。
設定:
- Linux (Xubuntu) 64 ビット
- Eclipse CDT、ネオン 4.6.0
- Eclipse の「GDB ハードウェア デバッグ」プラグイン「新しいソフトウェアのインストール」、リセットおよび 3 秒の遅延、停止するように構成されています。シンボルを読み込む (すべてのチェックボックス、カスタム コマンドなし)
- arm-none-eabi-gcc 4.8.3 ツールチェーン
- OpenOCD、最近ダウンロードされ、独自のコンソールで実行され、正確な MCU 用に構成され、それらによって提供されたスクリプトと st-link
- STM32L476RG 使用されるハードフロート付き MCU。
- ST-Link V2 デバッガ (スタンドアロン)
さて、毎回多少の苦労の末、デバッガーに接続できるシーケンスがありますが、変数のステップ実行と読み取りは明らかに信頼できるものではないため、私が見るものを一瞬信頼します. しかし、コール スタックが明らかなナンセンス エントリでいっぱいではなく、それらのエントリがごくわずかしかないポイントに到達することさえ面倒です。
例:
- ファームウェアでデバイスをフラッシュします。これは通常問題なく動作します。
- openocd を起動します。
- Eclipse でデバッグを開始します。
- OpenOcd に接続が表示され、「未定義のデバッグ理由 7 - ターゲットはリセットが必要です」と表示されます
- 私はEclipseの「再開」ボタンを押しても、プログラムが表示される偽のトップスタックフレームを超えて実行されます。
- 「サスペンド」(コールスタックではまだ偽物)を押してから、「終了」を押します。
- OpenOcd から Ctrl+C を押します。
- stm32 MCU を手動 (ハードウェア) でリセットします。
- OpenOcd を再起動します。
- Eclipse で再度デバッグを開始します。
OpenOCD 出力:
GNU ARM Eclipse 64 ビット オープン オンチップ デバッガー 0.10.0-dev-00287-g85cec24-dirty (2016-01-10-10:31) GNU GPL v2 の下でライセンスされています バグレポートについては、お読みください http://openocd.org/doc/doxygen/bugs.html Info : 最初に使用可能なセッション トランスポート "hla_swd" を自動選択しています。オーバーライドするには、'transport select' を使用します。 情報 : 選択されたトランスポートが低レベルのターゲット コントロールを引き継ぎました。プレーンな JTAG/SWD とは結果が異なる場合があります アダプター速度: 500 kHz アダプタ_nsrst_delay: 100 分離していない 分離していない 情報 : 480 kHz を使用すると、要求された速度 500 kHz に一致しません 情報 : 480 kHz を使用すると、要求された速度 500 kHz に一致しません 情報: クロック速度 480 kHz 情報: STLINK v2 JTAG v24 API v2 SWIM v4 VID 0x0483 PID 0x3748 情報: stlink api v2 を使用 Info : 目標電圧: 3.192646 Info : stm32l4x.cpu: ハードウェアには 6 つのブレークポイントと 4 つのウォッチポイントがあります 情報: tcp/3333 で「gdb」接続を受け入れています 情報: デバイス ID = 0x10076415 情報: フラッシュ サイズ = 1024kbytes 未定義のデバッグ理由 7 - ターゲットはリセットが必要です
運が良ければ、しばらくの間、ようやくデバッガ接続が機能するようになりました。しかし、これにはいくつかの繰り返しが必要な場合もあります。接続が悪いことは明らかなのに、なぜ「プレスレジューム」が間にあるのですか? 確かではありませんが、これにより、次の反復で接続できる可能性が大幅に高まるように思われました。
おそらく関連するメモ:MCUにはLCDが接続されており、それからいつリセットされるかがわかります。何らかの理由で、Eclipse でデバッグを開始しても、明らかにデバイスがリセットされませんが、デバッグ構成でリセット チェックボックスがオンになっています。端末で OpenOCD への telnet 接続を開き、そこで「リセット」を実行すると、デバイスがリセットされます。
セットアップの奇妙な動作の原因は何ですか?