「STM32開発環境構築/OpenOCDで書込み・デバッグ」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
*OpenOCDにスクリプトを追加
-"C:\stm32\openocd\scripts\"に、"openocd_myfunc.cfg"という名前で以下の内容のファイルをメモ帳などで作成。
#highlight(){{
proc halt_mpu { } {
init
reset halt
} }}
-Eclipseでデバッグ時、この関数をOpenOCD起動コマンドで呼び出さないと、正常にデバッグ操作ができない。
*EclipseからOpenOCDを起動できるようにする
-Eclipseのメニューバーで[Run]-[External Tools]-[External Tools Configurations]を選択。&br()(あいは、メニューバーで、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"と"Use full file path to set breakpoints"にチェックを入れる。
-"Apply"ボタンを押して設定を反映する。
-"Commands"タブを選択。
-"'Initialize' commands"テキストボックスに下記の文を入力。
#highlight(){
target remote localhost:3333
load
monitor soft_reset_halt
break main }
-"'Run' commands"テキストボックスに以下の文を入力。
#highlight(){
continue}
-"Apply"ボタンを押して設定を反映する。
-"Common"タブの"Display in favorites menu"で"Debug"にチェックを入れる。
-"Apply"ボタンを押して設定を反映し、"Close"ボタンでウィンドウを閉じる。
*EclipseからOpenOCDでデバッグできるか確認
-ツールーバーの"Debug"ボタンにある下向き三角を押し、"プロジェクト名 Debug"(説明通り操作しているなら、"blink_led Debug"となっている。)を選択し、デバッグを開始。&br()自動でプログラムがマイコンに書き込まれ、main関数でストップ(ブレイク)するようコマンドが送信される。
-初回はパースペクティブを切り替えるか確認するウィンドウが表示されるが、"OK"を選択。
-ソースコードが表示され、main関数のはじめの命令で止まっていることを確認する。&br()(説明通り操作しているなら、"RCC_APB2PeriphClockCmd(RCC_APB2P..."という行で止まっているはず。)
-ツールバーの"Step Over"を押すことで、1行ずつ実行されていけば、正常にデバッグできている。&br()(ショートカットキーとして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パースペクティブの見方>http://miqn.net/introduction/204.html]]から順に見ていくと、わかると思います。
-STM32マイコンのプログラム書き換え回数は、1万回(保証値)なので、実質書き込み回数を気にせずデバッグできると思います。
*OpenOCDにスクリプトを追加
-"C:\stm32\openocd\scripts\"に、"openocd_myfunc.cfg"という名前で以下の内容のファイルをメモ帳などで作成。
#highlight(){{
proc halt_mpu { } {
init
reset halt
} }}
-Eclipseでデバッグ時、この関数をOpenOCD起動コマンドで呼び出さないと、正常にデバッグ操作ができない。
*EclipseからOpenOCDを起動できるようにする
-Eclipseのメニューバーで[Run]-[External Tools]-[External Tools Configurations]を選択。&br()(あいは、メニューバーで、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"テキストボックスに下記の文を入力。
#highlight(){
target remote localhost:3333
load
monitor soft_reset_halt
break main }
-"'Run' commands"テキストボックスに以下の文を入力。
#highlight(){
continue}
-"Apply"ボタンを押して設定を反映する。
-"Common"タブの"Display in favorites menu"で"Debug"にチェックを入れる。
-"Apply"ボタンを押して設定を反映し、"Close"ボタンでウィンドウを閉じる。
*EclipseからOpenOCDでデバッグできるか確認
-ツールーバーの"Debug"ボタンにある下向き三角を押し、"プロジェクト名 Debug"(説明通り操作しているなら、"blink_led Debug"となっている。)を選択し、デバッグを開始。&br()自動でプログラムがマイコンに書き込まれ、main関数でストップ(ブレイク)するようコマンドが送信される。
-初回はパースペクティブを切り替えるか確認するウィンドウが表示されるが、"OK"を選択。
-ソースコードが表示され、main関数のはじめの命令で止まっていることを確認する。&br()(説明通り操作しているなら、"RCC_APB2PeriphClockCmd(RCC_APB2P..."という行で止まっているはず。)
-ツールバーの"Step Over"を押すことで、1行ずつ実行されていけば、正常にデバッグできている。&br()(ショートカットキーとして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パースペクティブの見方>http://miqn.net/introduction/204.html]]から順に見ていくと、わかると思います。
-STM32マイコンのプログラム書き換え回数は、1万回(保証値)なので、実質書き込み回数を気にせずデバッグできると思います。