STM32開発環境構築 > OpenOCDで書込み・デバッグ


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

OpenOCDにスクリプトを追加


  • "C:\stm32\openocd\scripts\"に、"openocd_myfunc.cfg"という名前で以下の内容のファイルをメモ帳などで作成。
proc halt_mpu { } {
  init
  reset halt
} 
  • Eclipseでデバッグ時、この関数をOpenOCD起動コマンドで呼び出さないと、正常にデバッグ操作ができない。

EclipseからOpenOCDを起動できるようにする

  • Eclipseのメニューバーで[Run]-[External Tools]-[External Tools Configurations]を選択。
    (あいは、メニューバーで、ExtarnalToolsボタン(再生マークの右下にバッグが描いてあるボタン)の下向きの三角をクリック、[External Tools Configurations]をクリック。)
  • 左メニューのなにもないところを右クリック。出てきたコンでキスとメニューで[New]を選択。
  • "Name"テキストボックスに"OpenOCD"と入力。
  • "Arguments"に下記の文をコピー。
STM32VLD -s C:/stm32/openocd/scripts -f board/stm32vldiscovery.cfg -f openocd_myfunc.cfg -c halt_mpu
STM32LD
STM32F4D
  • "Common"タブの"Display in favorites menu"で"External Tools"にチェックを入れる。
  • "Apply"ボタンを押し設定を適用、"Close"ボタンでウィンドウを閉じる。

EclipseからOpenOCDを起動できるか確認

  • メニューバーの[Run]-[External Tools]-[OpenOCD]を選択。
  • ウィンドウ下の"Console"ビューに下画像のようなメッセージが出力され、ST-LinkのCOMランプが点滅していれば、正常に起動できている。
  • "Console"ビューの"Tarminate"ボタン(四角の停止ボタン)を押し、OpenOCDを終了する。

EclipseからOpenOCDでデバッグできるようにする

  • Eclipseのメニューバーで[Run]-[Debug Configurations]を選択。
  • 左のメニューで"Zylin Embedded debug (Native)"を右クリック。
  • 出てくるコンテキストメニューで、"New"を選択。
  • "Debugger"タブを選択。
  • "GDB debugger"テキストボックスに"arm-elf-gdb"と入力。
  • 下にある"Verbose console mode"にチェックを入れる。
  • "Apply"ボタンを押して設定を反映する。
  • "Commands"タブを選択。
  • "'Initialize' commands"テキストボックスに下記の文を入力。
target remote localhost:3333
load
monitor soft_reset_halt
break main 
  • "'Run' commands"テキストボックスに以下の文を入力。
continue
  • "Apply"ボタンを押して設定を反映する。
  • "Common"タブの"Display in favorites menu"で"Debug"にチェックを入れる。
  • "Apply"ボタンを押して設定を反映し、"Close"ボタンでウィンドウを閉じる。

EclipseからOpenOCDでデバッグできるか確認

  • ツールーバーの"Debug"ボタンにある下向き三角を押し、"プロジェクト名 Debug"(説明通り操作しているなら、"blink_led Debug"となっている。)を選択し、デバッグを開始。
    自動でプログラムがマイコンに書き込まれ、main関数でストップ(ブレイク)するようコマンドが送信される。
  • 初回はパースペクティブを切り替えるか確認するウィンドウが表示されるが、"OK"を選択。
  • ソースコードが表示され、main関数のはじめの命令で止まっていることを確認する。
    (説明通り操作しているなら、"RCC_APB2PeriphClockCmd(RCC_APB2P..."という行で止まっているはず。)
  • ツールバーの"Step Over"を押すことで、1行ずつ実行されていけば、正常にデバッグできている。
    (ショートカットキーとしてF6キーでもできる。)

デバッグの手順

  • マイコンボードをUSBケーブルでパソコンに接続する。
  • プロジェクトをビルドする。
  • ツールバーの[External Tools]-[OpenOCD]を選択し、OpenOCDを起動。
  • ツールバーの[Debug]-[プロジェクト名 Debug]を選択し、デバッグを開始。自動でmain関数で停止する。(同時にパースペクティブがDebug用に切り替わる。)
  • 以下の操作でデバッグを進め、バグを見つける。
    • 止めたい行の右端をダブルクリックすことで、ブレークポイントを設定できる。
    • ツールバーの"Resume"ボタンでプログラムをスタート。ブレークポイントがある行まで実行される。
    • ツールバーの"Step Into(F5)"で、1行ずつ実行。(関数内にも入る。)
    • ツールバーの"Step Over(F6)"で、1行ずつ実行。(関数内に入らない。)
    • ツールバーの"Step Return(F7)"で、関数の外に出る。
    • ソースコードの変数名にマウスポインタを置くことで、変数の内容を見ることができる。
    • その他の詳しい操作法は、マイコン徹底入門-12.2.3.4. Debugパースペクティブの見方から順に見ていくと、わかると思います。
  • STM32マイコンのプログラム書き換え回数は、1万回(保証値)なので、実質書き込み回数を気にせずデバッグできると思います。