PlatformIO付属のOpenOCDで書き込み失敗
引用記事そのまま、ではありますが...
MacにCLionとplatformIOをインストールして、実行しようとした下記のエラー
** Programming Started **
Warn : Adding extra erase range, 0x08003224 .. 0x080037ff
Error: error writing to flash at address 0x08000000 at offset 0x00000000
embedded:startup.tcl:1516: Error: ** Programming Failed **
in procedure 'program'
in procedure 'program_error' called at file "embedded:startup.tcl", line 1581
at file "embedded:startup.tcl", line 1516
*** [upload] Error 1
================================================================== [FAILED]
PlatformIOに付属しているOpenOCDのバージョン0.12.0に問題があるらしく、0.11.0に戻してやると動くとのこと。
成敗!
platoformio.iniにopenocdのバージョンを指定するコマンドを追記します。この@以下のバージョン指定子は妙な感じがするが、下記のリポジトリのページで指定されているものの3つのうちの一つになっているので仕方ない。
[env:nucleo_f303k8]
platform = ststm32
board = nucleo_f303k8
framework = arduino
upload_protocol = stlink
platform_packages = platformio/tool-openocd@2.1100.211028 << 追記
追記するとBuildのときに自動でツールを引っ張ってきてくれる。で、無事動く。
考察
OpenOCDの最新バージョンは0.12.0-4で、2024/8/2に更新されている。
https://xpack-dev-tools.github.io/openocd-xpack/blog/2024/08/02/openocd-v0-12-0-4-released/
一方platformIOで指定可能な最新バージョンは3.12.0000で、二年前で更新が止まっている。
platformIOでの指定子とOpenOCDのバージョンの対応はいまひとつよくわからない。
PlatformIOを普通にインストールすると入ってくるopenOCDのバージョンは
0.12.0-01004-g9ea7f3d64-dirty (2023-01-30-17:03)
となっているので、番号からすると最新版のようだ。0.12.0から更新されているバージョンのはずだが、やはりエラーは出る。
ということで、ターゲットがSTM32F303K8の場合、現状0.11.0系を使うしかないというところか。