takashiskiのブログ

覚書の殴り書き

ST-Linkを使ってSTM32duinoで作ったファームウェアの最初の書き込みをする

STM32G0シリーズを使った電子機器を作ろうとしています。 とりあえずのスタートとして、STM32duinoを使って動作確認を実施しようと思いました。

nucleoから切り出したST-Link v2.1とSTM32G0をSWDで接続して書き込みを試みました。 しかし、まっさらな状態からやる場合、Arduino IDE + STM32duino + STM32CubeProgrammerでは書き込めませんでした。

その時のエラー文の例は以下です。

Failed to execute MI command

いろいろ試した結果、どうやら最初に書き込まれているファームウェアではSWDが無効になっている*1ことが原因のようでした。

対策として、STM32CubeIDEでSWDを有効にしたファームウェアを作成し、書き込んだところ、以降ArduinoIDEから呼び出したSTM32CubeProgrammerで書き込めるようになりました。

ざっくり手順は以下。

  • STM32CubeIDEをインストールする
  • 該当マイコンをターゲットとしたプロジェクトを作成する
  • iocファイルを選択して、マイコンの設定に移動する
  • Pinout&ConfigurationタブのCategories > SYS > DebugSerial Wireにする
  • 保存してコードを再生成する
  • Runで書き込む

参考記事

*1:もしくは何も書き込まれていない?