STM32CubeIDE の Failed to execute MI command エラー

かねてより STM32 の開発を STM32CubeMX + STM32CubeIDE で行っていますが、どのツールでもそれなりにすんなりいかない点があります。STM32CubeIDE では、わけのわからないエラーで開発が中断することが多いので困りものです。

ときどき発生するのが、Flash 書き込み時の「Failed to execute MI command」エラーです。

1つの復帰方法は、一度 ST-Link の USB ケーブルをさしなおして、別の正常なプロジェクトのFlashを書き込んでから、戻って再度書き込むことです。そうするとなぜか書けることがあります。

他に効果があったのは、デバッガ設定のポート番号を変えることです。これで復帰できることもありました。

ST社のフォーラムを見ると、同じエラーの相談はいくつか見かけますが、いずれも解決していないようにみえます。

git clone したプロジェクトを新しいバージョンのソフトで開くと、このエラーになりがちです。あるいはファイルが不足しているのかもしれません。

わかりました。ボードとプロジェクトの組み合わせによっては、SPI Flash など、内蔵 Flash 以外の場所に書き込む必要があり、その場合 Run Configurations の External loaders の指定が必要です。TouchGFX などでプロジェクトを作るとここが指定されています。

この設定は .project ファイルではなく、IDE フォルダ内の “(プロジェクト名) Debug.launch” のような名前のファイルに格納されています。
つまり、このファイルをパッケージし忘れたり、何らかの理由でおかしくなったら、Failed to execute MI command エラーに行きつくわけです。 適切な Loader を指定したら、正しく書き込めるようになりました。

コメントを残す

メールアドレスが公開されることはありません。