CLionからOpenOCD経由でNucleo F401REにファームウェア書き込みとデバッグが出来るようにした。
前提
STM32CubeIDEのプロジェクトをCLionで読み込んで使用しています。
使ったもの / 必要なもの
- MacBook Pro 15 (late 2016)
- CLion
- OpenOCD
- gcc-arm-embedded
- Nucleo F401RE
- オフィスのおもちゃ箱から拾ってきた
インストール
CLion, OpenOCD, gcc-arm-embeddedはHomebrewから入れる
brew install open-ocd
brew cask install clion
brew cask install gcc-arm-embedded
toolchainの設定
Default
を gcc-arm-embedded
という名前にコピーする。
C Compilerと C++ Compilerをgcc-arm-embeddedのものに変更する。ファイルは /usr/local/bin
以下の arm-none-eabi-gcc
と arm-none-eabi-g++
とする。デバッガはBundled GDBに設定。
CMakeの設定
CMakeで使用するtoolchainを gcc-arm-embedded
に切り替える。
Run / Debug Configurationの設定
CMake ApplicationとOpenOCD Download & Runを追加する。
OpenOCDの設定を行う場合、Board config fileは st_nucleo_f4.cfg
を指定する。
トラブルシュート
デバッガが動かない
デバッガにGDBを指定しているにも関わらず、次のようにLLDBでは接続できないというエラーが出る。
Error running 'OCD led_blink': GDB Remote Debug using LLDB is not supported in CLion yet
次の画面のように、toolchain内でデバッガをGDBにセットしたコンフィグを一番上にする。
ST-Link/V2に接続できない
F401REには ST-Link/V2-1
が内包されている。 STM32 Debug+VCP
と STM32 Debug + Mass storage + VCP
という2つのバージョンがあり、この2つのFWは、USBデバイスとしてのPIDが異なる(前者が 0x374b
で後者が 0x3752
)。前述のBoard config fileの指定では後者のFW用のもの。