【5分でわかる】ST-LINK Utilityを使ったSTM32へのプログラム書き込み方法【超詳細5000字解説】
はじめに:この記事であなたが得られること
「STM32マイコンを動かしてみたいけど、プログラムの書き込み方がわからない…」
「ST-LINK Utilityというツールが良いらしいけど、使い方が難しそう…」
この記事は、そんな悩みを抱えるSTM32初心者のための、世界一詳しいガイドを目指して書かれました。
STMicroelectronics社が提供する「ST-LINK Utility」は、STM32マイコンにプログラム(ファームウェア)を書き込むための専用ツールです。シンプルながらも強力なこのツールを使いこなせば、あなたの作ったプログラムをSTM32マイコン上で動かし、LEDをチカチカさせたり(Lチカ)、センサーの値を読み取ったりといった、電子工作の醍醐味を味わう第一歩を踏み出せます。
この記事のゴールは、あなたが一人で、迷うことなくST-LINK Utilityを使ってSTM32へのプログラム書き込みを成功させられるようになることです。
■ 5分でわかる? 5000字?
この記事のタイトルは「5分でわかる」ですが、本文は約5000字という大ボリュームです。これは、二つの目的を両立させるためです。
- 時間がない方向けの「速習5分」セクション: 記事の冒頭に、書き込み手順の要点だけを凝縮したまとめを配置しました。すでにマイコン開発の経験がある方なら、ここを読むだけで作業が完了するかもしれません。
- 初心者向けの「超詳細」解説: その後には、ツールのインストールから、ハードウェアの接続、各設定項目の意味、そして誰もが一度は遭遇するであろうエラーの解決策まで、スクリーンショットが見えるかのように詳細なステップバイステップガイドが続きます。
まずは「速習5分」で全体像を掴み、その後、ご自身のペースで詳細解説を読み進めてみてください。この記事を読み終える頃には、あなたはST-LINK Utilityを完全にマスターしているはずです。
■ なぜ今、ST-LINK Utilityなのか?
現在、ST-LINK Utilityの後継として「STM32CubeProgrammer」という、より高機能なツールがリリースされています。しかし、それでもST-LINK Utilityを学ぶ価値は十分にあります。
- シンプルさ: 機能が書き込みに特化しているため、UIが直感的でわかりやすい。
- 安定性: 長年にわたり使われてきた実績があり、非常に安定しています。
- 既存の資料: Web上にはST-LINK Utilityを使ったチュートリアルや解説記事が豊富に存在します。
まずはこのST-LINK UtilityでSTM32開発の基本を確実に身につけ、その後、必要に応じてSTM32CubeProgrammerへステップアップするのが、最も効率的な学習ルートと言えるでしょう。
それでは、STM32開発のエキサイティングな世界へ、一緒に旅立ちましょう!
【速習5分】要点まとめ:ST-LINK Utilityでの書き込み手順
お時間がない方のために、ここだけ読めば作業ができるように手順をまとめます。
-
準備:
- PCに「ST-LINK Utility (STSW-LINK004)」をインストールします。ST公式サイトからダウンロードできます。(※インストール時にST-LINKドライバも導入されます)
- STM32マイコンボードとST-LINKデバッガをSWD(Serial Wire Debug)で接続します。(NucleoボードなどはST-LINKが内蔵されているのでUSBケーブルでPCに繋ぐだけです)
-
接続:
- ST-LINK Utilityを起動します。
- ツールバーの「Target」メニューから「Connect」を選択します。(コンセントのアイコン)
- 接続に成功すると、マイコンのメモリ情報などが画面に表示されます。
-
ファイル選択:
- ツールバーの「File」メニューから「Open file…」を選択します。(フォルダのアイコン)
- 書き込みたいプログラムファイル(
.hex
または.bin
形式)を選択します。 - 注意:
.bin
ファイルを選んだ場合は、書き込み開始アドレスとして0x08000000
を手動で入力する必要があります。
-
書き込み & ベリファイ:
- ツールバーの「Target」メニューから「Program & Verify…」を選択します。(ICチップに下矢印のアイコン)
- 表示されたダイアログで、設定(特に書き込みアドレス)が正しいことを確認します。
- 「Verify after programming」(書き込み後ベリファイ)にチェックが入っていることを確認し、「Start」ボタンをクリックします。
-
完了:
- ログウィンドウに「Verification… OK」と表示されれば成功です。
- ツールバーの「Target」メニューから「Disconnect」を選択して(コンセントにバツ印のアイコン)、接続を解除します。
- ボードのリセットボタンを押すか、電源を入れ直してプログラムの動作を確認します。
第1章:準備編 – 必要なものと環境構築
ここからは詳細な解説です。まずはプログラムを書き込むために必要なハードウェアとソフトウェアを揃えましょう。
1-1. 必要なハードウェア
-
STM32マイコンボード:
- Nucleoボード / Discovery Kit: ST-LINKデバッガがボード上に搭載されているため、初心者には最もおすすめです。USBケーブル一本でPCと接続でき、すぐに開発を始められます。
- 汎用STM32ボード (通称 “Blue Pill”など): 安価で人気がありますが、ST-LINKデバッガが内蔵されていないため、別途用意する必要があります。
-
ST-LINK/V2 デバッガ:
- Nucleoボードなどを使わない場合に必要です。PCのUSBポートに接続し、STM32マイコンボードと数本のワイヤーで接続して使用します。純正品から安価な互換品まで様々です。
-
PC (Windows):
- この記事ではWindows 10/11を前提に解説します。ST-LINK UtilityはWindows専用のツールです。
-
USBケーブル:
- PCとST-LINK(またはNucleoボード)を接続するために使用します。お使いのボードやST-LINKに合ったコネクタ(Micro-B, Mini-B, Type-Cなど)のものを用意してください。
1-2. ST-LINK Utilityのダウンロードとインストール
ソフトウェアの準備です。以下の手順でST-LINK UtilityをPCにインストールしましょう。
ステップ1: ダウンロード
- Webブラウザで「STSW-LINK004」と検索するか、STMicroelectronicsの公式サイトにアクセスします。
- サイト内で「ST-LINK Utility (STSW-LINK004)」を探し、製品ページを開きます。
- 「Get Software」や「Download」といったボタンをクリックします。
- STのサイトからソフトウェアをダウンロードするには、多くの場合、ユーザー登録(mySTアカウント)とログインが必要です。指示に従ってアカウントを作成し、ライセンス契約に同意してください。
- ログイン後、ダウンロードが開始されます。
en.stsw-link004.zip
のような名前のZIPファイルがダウンロードされます。
ステップ2: インストール
- ダウンロードしたZIPファイルを展開(解凍)します。
- 展開したフォルダの中にある
ST-LINK_Utility_setup.exe
のようなインストーラーをダブルクリックして実行します。 - 「ユーザーアカウント制御」の警告が表示されたら「はい」をクリックします。
- インストーラーが起動します。「Welcome to the ST-LINK Utility Setup Wizard」という画面が表示されたら、「Next」をクリックします。
- ライセンス契約の画面が表示されます。「I accept the terms of the License Agreement」にチェックを入れ、「Next」をクリックします。
- ユーザー情報の入力画面は、特に変更せず「Next」で進んで問題ありません。
- インストール先のフォルダを選択する画面が表示されます。こだわりがなければデフォルトのまま「Next」をクリックします。
- 「Setup Type」は「Complete」(すべてインストール)を選択して「Next」をクリックします。
- 「Ready to Install the Program」という画面で「Install」をクリックすると、インストールが開始されます。
- インストール中に「ST-Link Driver Installer」が自動的に起動することがあります。これはPCがST-LINKを認識するために必須のドライバです。画面の指示に従い、「Next」や「Install」をクリックしてドライバもインストールしてください。
- インストールが完了すると、「Installation Complete」や「Setup Wizard Completed」といった画面が表示されます。「Finish」をクリックしてインストーラーを終了します。
これで、デスクトップに「ST-LINK Utility」のショートカットアイコンが作成され、スタートメニューにも登録されているはずです。
第2章:実践編 – プログラム書き込みのステップバイステップガイド
いよいよ、実際にプログラムを書き込んでいきます。ここでは、最も一般的なLチカ
(LEDを点滅させる)プログラムのバイナリファイル(.hex
ファイル)が既にあるものとして進めます。
2-1. STM32ボードとPCの接続
物理的な接続は、最も間違いが起こりやすいポイントです。慎重に行いましょう。
ケースA: Nucleoボード / Discovery Kit を使う場合
これは非常に簡単です。
ボード上に搭載されているST-LINK部分のUSBコネクタ(通常は”ST-LINK”や”USB”と表記されています)と、PCのUSBポートをUSBケーブルで接続するだけです。
接続すると、ボード上の電源LEDが点灯するはずです。PCがボードを認識し、ドライバのインストールが自動的に行われることもあります。
ケースB: 汎用STM32ボードと外付けST-LINK/V2を使う場合
こちらは少し手順が増えます。ST-LINKとSTM32マイコンを「SWD (Serial Wire Debug)」という方式で接続します。通常、以下の4本の線を接続します。
ST-LINK/V2 側ピン | STM32ボード 側ピン | 役割 |
---|---|---|
SWDIO | SWDIO (または DIO) | データ入出力ピン。 データのやり取りに使います。 |
SWCLK | SWCLK (または CLK) | クロックピン。 データ転送のタイミングを同期させます。 |
GND | GND | グラウンド。 電位の基準を合わせるために必須です。 |
3.3V | VCC / 3.3V | 電源供給ピン。 ST-LINKからSTM32に電源を供給します。 |
【重要】接続の際の注意点:
- ピン配置の確認: ボードやST-LINKによってピンの並び順が異なります。必ずシルク印刷(基板上の白い文字)やデータシートでピンの名前を確認してください。絶対に間違えないでください。
- 電源(3.3V)の接続:
- もしSTM32ボードに別途USBなどで電源を供給している場合は、ST-LINKからの3.3Vは接続しないでください。二重に電源を供給すると、最悪の場合、マイコンやPCが故障する可能性があります。
- ST-LINKから電源を供給する場合のみ、3.3Vを接続します。
- GNDの接続は必須: 電源を別途供給する場合でも、GNDは必ず接続してください。GNDが接続されていないと、信号レベルが不安定になり、通信が全くできません。
- 配線は短く: 接続に使うジャンパワイヤは、できるだけ短いものを選びましょう。線が長いとノイズの影響を受けやすくなり、通信エラーの原因となります。
2-2. ST-LINK Utilityの起動とSTM32への接続
物理的な接続が完了したら、いよいよPC上で操作します。
- デスクトップのショートカットまたはスタートメニューから「ST-LINK Utility」を起動します。
- シンプルなウィンドウが表示されます。上部にはメニューバーとツールバー、中央の広い領域は後でメモリの内容が表示されるエリア、下部はログウィンドウです。
- ツールバーにあるコンセントの形をしたアイコン(マウスを乗せると”Connect to target”と表示されます)をクリックします。もしくは、メニューバーの
Target -> Connect
を選択します。 -
接続成功:
- すべてが正しく接続されていれば、一瞬で接続が完了します。
- 中央のメモリ表示エリアに、
0x08000000
から始まる16進数の羅列(マイコンのFlashメモリの内容)が表示されます。 - ウィンドウのタイトルバーに、接続したSTM32マイコンの型番(例:
STM32F401RE
)やFlashメモリのサイズが表示されます。 - 下部のログウィンドウに、
Connected via SWD.
やDevice ID: 0x431
のような成功メッセージが表示されます。
(※テキストベースでの説明: 画面中央に16進数のデータが表示され、ウィンドウ上部にマイコン情報、下部に成功ログが表示される状態)
-
接続失敗:
- もし「Cannot connect to target」というエラーメッセージが表示された場合は、何かが間違っています。第3章のトラブルシューティング「”Cannot connect to target” / “No ST-LINK detected”」の項目を参照して、原因を一つずつ確認してください。
2-3. 書き込むプログラムファイルの選択
マイコンとの通信が確立できたので、次に書き込むプログラムファイルをST-LINK Utilityに読み込ませます。
- ツールバーのフォルダの形をしたアイコン(マウスを乗せると”Open file”と表示されます)をクリックします。もしくは、メニューバーの
File -> Open file...
を選択します。 - ファイル選択ダイアログが表示されます。
- あなたがコンパイルして生成したプログラムファイル(バイナリファイル)を探して選択します。ファイルは通常、開発環境(STM32CubeIDE, Keil, IARなど)のプロジェクトフォルダ内の
Debug
やRelease
,Build
といった名前のフォルダにあります。 -
ファイル形式は主に
.hex
または.bin
です。.hex
(Intel HEX形式): データ本体に加えて、書き込み先のアドレス情報などが含まれています。ST-LINK Utilityはこれを自動で解釈してくれるため、初心者には.hex
ファイルの使用を強く推奨します。.bin
(バイナリ形式): プログラムの機械語コードがそのまま入っている純粋なデータです。アドレス情報を含まないため、どこに書き込むかを自分で指定する必要があります。
-
ファイルを選択して「開く」をクリックします。
- 【最重要】
.bin
ファイルを選択した場合の追加操作:.bin
ファイルを開くと、「Binary File Options」という小さなウィンドウが表示されます。Address (Hex)
という入力欄に、書き込みを開始するメモリアドレスを入力する必要があります。- ほとんどのSTM32マイコンでは、内蔵Flashメモリの開始アドレスは
0x08000000
です。この値を入力して「OK」をクリックしてください。このアドレスを間違えると、プログラムは絶対に正常動作しません。
ファイルが正常に読み込まれると、メモリ表示エリアの内容が、読み込んだファイルの内容に更新されます。
2-4. プログラムの書き込みとベリファイ
いよいよマイコンのFlashメモリにプログラムを書き込みます。
- ツールバーのICチップに下向きの矢印が描かれたアイコン(マウスを乗せると”Program & Verify”と表示されます)をクリックします。もしくは、メニューバーの
Target -> Program & Verify...
を選択します。 -
「Program & Verify」ダイアログボックスが表示されます。ここで最終確認と設定を行います。
- File path: 先ほど選択したファイルへのパスが表示されています。正しいか確認しましょう。
- Start address: 書き込み開始アドレスです。
.hex
ファイルなら自動で正しいアドレスが表示されます。.bin
ファイルの場合は、先ほど入力した0x08000000
が表示されているか必ず確認してください。 - Verify after programming: 非常に重要なオプションです。 これにチェックを入れると、書き込み完了後に、Flashメモリの内容を読み出し、書き込もうとしたデータと一致するかを自動で検証(ベリファイ)してくれます。これにより、書き込みエラーを確実に検出できます。必ずチェックを入れてください。
- Reset after programming: これにチェックを入れると、書き込みとベリファイが成功した後に、マイコンを自動的にリセットしてくれます。リセットされると、書き込んだ新しいプログラムが即座に実行開始されるため便利です。チェックを入れておくことをお勧めします。
- Skip flash erase before programming: 通常、プログラムを書き込む前には、対象のFlashメモリ領域を全消去する処理が自動で行われます。このオプションは、その消去処理をスキップするものです。特殊なケース(既存のプログラムの一部だけを書き換えたいなど)以外では使用しません。チェックは入れないでおきましょう。
-
すべての設定を確認したら、「Start」ボタンをクリックします。
- 書き込みが開始されます。ウィンドウ下部のプログレスバーが進み、ログウィンドウに
Erase...
,Programming...
,Verification...
といった進捗状況がリアルタイムで表示されます。 -
書き込み成功:
- すべての処理が問題なく完了すると、ログの最後に「Verification… OK」や「Programmed and Verified successfully」といったメッセージが表示されます。
- これでプログラムの書き込みは成功です!
-
書き込み失敗:
- もし「Verification failed」などのエラーが表示された場合は、第3章のトラブルシューティングを参照してください。
2-5. 接続の解除と動作確認
書き込みが成功したら、後片付けです。
- ツールバーのコンセントにバツ印が描かれたアイコン(マウスを乗せると”Disconnect from target”と表示されます)をクリックします。もしくは、メニューバーの
Target -> Disconnect
を選択します。 - これでST-LINK Utilityとマイコンの論理的な接続が解除されます。
- 「Reset after programming」にチェックを入れていなかった場合は、STM32ボード上のリセットボタン(通常は黒い小さなボタン)を押してください。
- さあ、動作確認です! Lチカのプログラムを書き込んだのであれば、ボード上のユーザーLED(Nucleoなら緑色、Blue Pillなら青色など)が、プログラムで指定した通りの周期で点滅を始めるはずです。
おめでとうございます! これであなたはST-LINK Utilityを使ったプログラム書き込みの全手順をマスターしました。
第3章:応用・トラブルシューティング編
基本的な書き込みができるようになったら、もう少し便利な機能や、誰もが一度はハマるであろう問題の解決策についても見ていきましょう。
3-1. よく使う便利機能
-
Erase Chip (チップ全体を消去):
- メニューバーの
Target -> Erase Chip
を選択すると、マイコンのFlashメモリ全体を完全に消去できます。 - プログラムが意図しない動作をする場合や、一度まっさらな状態からやり直したい場合に便利です。
- 実行すると、メモリの内容がすべて
FF
で埋められます。
- メニューバーの
-
Option Bytes (オプションバイト):
- メニューバーの
Target -> Option Bytes...
で開けます。 - これはSTM32マイコンのハードウェア的な動作を規定する、非常に重要な設定領域です。
- Readout Protection (RDP): メモリの読み出し保護レベルを設定します。
Level 1
にすると、デバッガからのFlash読み出しができなくなります(製品のプログラムをコピーされたくない場合に設定)。Level 2
にすると、読み出しだけでなく、再書き込みも完全にできなくなり、元に戻せません。初心者は絶対にLevel 0
から変更しないでください。 - その他、ウォッチドッグタイマの設定や、電源電圧監視(BOR)のレベル設定など、高度な項目が含まれます。基本的には、内容を完全に理解するまで触らないのが賢明です。
- メニューバーの
-
Upload (メモリ内容の吸い出し):
- ツールバーに「Upload from target」というICチップから上矢印が出ているアイコンがあります。
- これは、現在マイコンのメモリに入っている内容をPCにファイルとして保存(吸い出し)する機能です。
- バックアップや、書き込んだプログラムが本当に正しいかバイナリレベルで比較したい時などに使えます。
3-2. よくあるエラーと対処法
エラー1: “Cannot connect to target” / “No ST-LINK detected”
最も頻発するエラーです。原因は多岐にわたるので、上から順に確認してください。
-
原因A: 物理的な接続ミス
- 対処法: もう一度、SWDの配線(
SWDIO
,SWCLK
,GND
)が正しいか、ピン配置図と見比べて徹底的に確認してください。特にSWDIO
とSWCLK
を逆にしていないか、GNDを接続し忘れていないかを確認します。
- 対処法: もう一度、SWDの配線(
-
原因B: ターゲットボードへの電源供給不足
- 対処法: STM32ボードの電源LEDは点灯していますか? 外付けST-LINKを使っていて、ボードに別途電源供給が必要な場合は、USBケーブルなどを接続し忘れていないか確認してください。
-
原因C: ST-LINKドライバの問題
- 対処法: Windowsの「デバイスマネージャ」を開き、「ユニバーサル シリアル バス デバイス」の項目に「STMicroelectronics STLink Virtual COM Port」や「ST-Link Debug」といったデバイスが表示されているか確認します。もし「不明なデバイス」になっていたり、警告マークが付いていたりする場合は、ドライバが正しくインストールされていません。ST-LINK Utilityを再インストールするか、STのサイトから最新のドライバ(STSW-LINK009)を別途インストールしてください。
-
原因D: ST-LINKのファームウェアが古い
- 対処法: ST-LINK Utilityのメニューバーから
ST-LINK -> Firmware update
を選択します。表示されたダイアログで「Device Connect」をクリックし、現在のファームウェアバージョンを確認します。「Upgrade」ボタンが押せる状態であれば、クリックして最新のファームウェアに更新してください。
- 対処法: ST-LINK Utilityのメニューバーから
-
原因E: マイコンが低電力モードなどに入っている
- 対処法: プログラムによっては、起動直後にデバッグ用のピンを無効化したり、マイコン全体がスリープモードに入ったりして、デバッガが接続できなくなることがあります。この場合は、後述の「Connect under reset」を試してみてください。
エラー2: “Verification failed” (ベリファイ失敗)
書き込みはできたものの、内容が正しくないというエラーです。
-
原因A: 電源が不安定、またはノイズ
- 対処法: PCのUSBポートの電力供給が不安定な場合があります。USBハブを使っている場合は、PC本体のUSBポートに直接接続してみてください。また、SWDの配線が長すぎるとノイズを拾いやすくなります。できるだけ短いジャンパワイヤを使用してください。
-
原因B: Flashメモリの不良
- 対処法: 非常に稀ですが、Flashメモリ自体が寿命や静電気などで故障している可能性もゼロではありません。もし可能であれば、別のSTM32ボードで試してみてください。
エラー3: .bin
ファイルを書き込んだけど動かない
- 原因: 書き込みアドレスの間違い
- 対処法:
.bin
ファイルを書き込む際に、開始アドレスを0x08000000
に設定したか、もう一度確認してください。このアドレスは、マイコンが起動時に最初にプログラムを読みに行く場所を指します。ここが間違っていると、マイコンは何を実行していいかわからず、何も起きません。
- 対処法:
3-3. 接続設定のカスタマイズ (Connect under reset)
Target -> Settings...
から、接続時の詳細設定ができます。特に重要なのが「Connection Settings」です。
- Mode:
Normal
: 通常の接続モードです。Hot Plug
: マイコンが既に動作中に接続するためのモードです。Connect under reset
: これが非常に強力な切り札です。 このモードを選択すると、ST-LINKはマイコンをリセット状態に保持したまま接続を試みます。これにより、プログラムが起動してデバッグピンを無効化する前に、強制的にマイコンの制御を奪うことができます。「Cannot connect to target」がどうしても解決しない場合に試す価値があります。
第4章:ST-LINK UtilityからSTM32CubeProgrammerへ
この記事でST-LINK Utilityの基本をマスターしたあなたへ、次のステップをご紹介します。
前述の通り、ST-LINK Utilityは現在メンテナンスモードにあり、積極的な新機能の追加は行われていません。ST社が公式に推奨する後継ツールが「STM32CubeProgrammer (STM32CUBEPROG)」です。
STM32CubeProgrammerのメリット:
- 幅広い対応: 最新のSTM32シリーズにも迅速に対応します。
- 多様な接続方法: ST-LINK(SWD/JTAG)だけでなく、UARTブートローダやUSB DFU(Device Firmware Update)など、様々な方法で書き込みが可能です。
- クロスプラットフォーム: Windowsだけでなく、LinuxやmacOSにも対応しています。
- CLIの提供: GUI操作だけでなく、コマンドライン・インターフェース(CLI)も提供されています。これにより、書き込み作業をスクリプトで自動化するなど、より高度な使い方が可能になります。
基本的な操作の流れ(接続→ファイル選択→書き込み)はST-LINK Utilityと非常に似ているため、この記事で学んだ知識はそのまま活かせます。UIはよりモダンになっていますが、アイコンの意味するところなどは直感的に理解できるでしょう。
まずはST-LINK Utilityで自信をつけ、より多くの機能が必要になったり、新しいSTM32マイコンを使い始めたタイミングで、STM32CubeProgrammerへの移行を検討するのがスムーズなおすすめのルートです。
まとめ:あなたのSTM32開発は、今始まったばかり
この記事では、ST-LINK Utilityを使ったSTM32マイコンへのプログラム書き込み方法を、準備から実践、トラブルシューティングまで網羅的に解説しました。
【今日学んだことの振り返り】
* 準備: ST-LINK Utilityをインストールし、STM32ボードとST-LINKを正しく接続する。
* 基本操作: Connect
→ Open file
→ Program & Verify
→ Disconnect
の4ステップで書き込みは完了する。
* 重要ポイント: .bin
ファイルのアドレスは0x08000000
。Verify after programming
は必ず有効にする。
* トラブル解決: 接続できない時は、配線、電源、ドライバを疑う。Connect under reset
が有効な場合もある。
ST-LINK Utilityは、STM32開発の入り口に立つあなたにとって、信頼できる相棒となるツールです。今日、あなたが初めてLチカを成功させた感動は、きっとこれからの電子工作や組み込みシステム開発の大きなモチベーションになるはずです。
プログラムの書き込みは、開発プロセスの一部にすぎません。この先には、自分のアイデアを形にするためのプログラミング、センサーやアクチュエータを制御する面白さ、そしてより高度なデバッグ技術の習得など、さらにエキサイティングな世界が広がっています。
この記事が、あなたの素晴らしいSTM32開発ライフの確かな第一歩となったなら幸いです。さあ、次のプロジェクトは何にしますか? 楽しんでいきましょう!