午前中ずっと動いていたボードがある。
Gitの変更もなく、ビルドも同じ。それなのにデバッガをつないでConnectを押すと、ステータスLEDが消えた。
原因を調べるための道具が、現象の一部になってしまった。
ここでコードを直し始める前に、何が最初に変わったのかを確かめたい。
プローブがターゲットに接続できない場合と、接続後にアプリケーションが止まる場合は別の問題だ。
接続できないなら、共通GND、ターゲットの基準電圧、SWD配線、リセット線を確認する。
接続後に止まるなら、接続方式を確認する。設定によっては接続時にコアがリセットまたは停止し、その間も外部入力や一部の周辺回路は動き続けることがある。
Watchウィンドウも、必ずしも静かな観察者ではない。
読むとフラグが消えるステータスレジスタもある。値を確認するために開いた画面が手がかりを変えたなら、データシートで読み出し動作を確かめ直す。
同じバイナリと同じ入力を使い、デバッガなしの場合と接続した場合を比べる。
Connect前後のリセット信号と外部信号を一つ記録するだけでも、違いの始まる場所が見えることがある。設定は一度に一つだけ変える。
ボードが止まったら、必ずデバッガを疑えという話ではない。
ケーブル、リセット、停止、レジスタの読み出し。そのどこで最初に変化が起きたのかを見つけることが、調査の出発点になる。
コメントを読み込んでいます。