vscode で nucleo-F401RE のデバッグ環境を構築
経緯
nucleo 用にビルド環境を docker で構築したが、 現状、docker for windows は USBデバイスに対応していないため、コンテナ内ではデバッグができない。 そこで、泣く泣くホスト側にも開発環境を用意し、デバッグ環境を構築することにした。
vscode のデバッグ機能を使用して構築する
公式サイトのチュートリアルをもとに環境を構築。
以下をインストール。
- GNU Tools for Arm Embedded Proccessors 9-2019-q4-major 2019
- Git 2.26.1
- TortoiseHg 5.0.2
- GnuWin32 Make-3.81
- Python 3.8.2
vscode 用にmbed-cli プロジェクトをインポートし、make する。
# mbed import http://os.mbed.com/teams/ST/code/mbed-os-example-blinky/ # cd mbed-os-example-blinky # mbed export -i vscode_gcc_arm -m NUCLEO_F401RE --profile debug # make
ここで make に失敗(No such file on directory)して詰まったが、PCを再起動するとすんなり make できた。
後は、先ほど export したときに生成されている launch.json を環境に合わせていじる。
"debugServerArgs": "-f \"C:\\Program Files (x86)\\OpenOCD-20200408-0.10.0\\share\\openocd\\scripts\\board\\st_nucleo_f4.cfg\" -f \"C:\\Program Files (x86)\\OpenOCD-20200408-0.10.0\\share\\openocd\\scripts\\interface\\stlink-v2-1.cfg\" -c init -c \"reset init\"", "serverStarted": "target halted due to debug-request, current mode: Thread", "MIDebuggerPath": "C:\\Program Files (x86)\\GNU Tools ARM Embedded\\9 2019-q4-major\\bin\\arm-none-eabi-gdb.exe", "debugServerPath": "C:\\Program Files (x86)\\OpenOCD-20200408-0.10.0\\bin\\openocd.exe",
vscode のデバッグ画面から ”C++ Launch” を押下し、デバッグを開始する。 make が走り、flash writeが始まる。 しかし、flash write が終わっても、target board が reset せず、デバッグを開始できない。 苦肉の策で board 上の reset ボタンを押下すると、main.cpp に張った break point で止まった!
できた。
結構 elf ファイルの転送に時間がかかるが、breakpoint を張れるようになってデバッグが必要になっても心強い。
[追記]
visual studio code の 拡張機能として、Platform IO がある。 これを使えば、割と簡単にデバッグ環境を構築できた。(少なくとも、デバッグ設定ファイルをいじる手間は省ける。) また、ターゲットが(いまのところ)確実に reset するので、使いやすい。 こっちのほうがおすすめですね。