マツドサイエンティスト・研究日誌 保存版
STM32入門 プログラムを書き込む方法

初出:2011年12月04日 元々のブログ・コンテンツへのリンク
カテゴリーのインデックス: STM32

写真は STM32 にプログラムを書き込んだりオンボード・デバッグをするために、パソコンと接続するインタフェースだ。写真の左が自作したJTAGkey クローンで、右が秋月で買ったST-LINK。今回は、どっちを買えば、もしくは作れば良いかって話。

PICやH8、SH-2と同じように STM32 もフラッシュROMを内蔵していて、そこにプログラムを書き込んで使う。もちろん、プログラムは母艦となるパソコン上でコンパイルやアセンブル・リンクを行なって作る。

ここで問題となるのは、作ったプログラムをどうやって STM32内のフラッシュROMに書きこむかと言う事だ。STM32の場合、フラッシュROMに書き込む方法の情報がなくて悩むのではなく、逆に情報が多すぎて、何だか判らなくなる。STM32に関して書かれた書籍や雑誌に記事などは、コンパイラ・アセンブラ・リンカーやデバッガー、統合環境、プログラム書き込み・オンボードデバッガーなどを一度に説明しようとするが、それらの組み合わせは星の数ほどある。
しかし、パソコン上でプログラムを作るためのコンパイラやアセンブラ・リンカなどに関しては、無料で使える良いものがあって、パソコンとインターネットが使える環境さえあれば、数時間もあればセッティングできるので、ひとまず後回しにしよう。今回は「作ったプログラムをSTM32に書き込む方法」に絞って話を進める。

まず、物理的にSTM32のフラッシュROMへのプログラム書き込む方法は、以下の4つである。
 1: USB経由 (DFU)
 2: シリアルインターフェース
 3: SWD
 4: JTAG
この内、1は USB ケーブルで母艦パソコンと接続するだけと言う極めて簡単なインターフェースで良い反面、「USB I/F を持つ STM32にしか使えない」事と「最初に DFU と呼ばれるローダープログラムを、他の方法で書き込む必要がある」事と言う二つの欠点をもつので、以降の説明から除外する。
また、2もインターフェースは簡単だが、デバックができないなどの欠点がある事と、私自身が未だ動作確認していないので、これも以降の説明から除外する。

残りの3と4だが、これを実際に母艦パソコンに接続するインターフェースと、母艦パソコンでプログラム書き込みに使うアプリケーションソフトも幾つかあって、その組み合わせも多い。主な組み合わせを以下に示すが、表記上「」を物理的にSTM32と直接つながる部分、『』をSTM32とパソコンと接続するインターフェース、【】を母艦パソコンでプログラム書き込みに使うアプリケーションソフトとさせてもらう。

組合せ 1:「SWD」『ST-LINK』【ST-LINK Utility】
組合せ 2:「SWD」『ST-LINK』【TrueSTUDIO (Lite)】
組合せ 3:「SWD」『Versaloon』【OpenOCD】
組合せ 4:「JTAG」『JTAGkey』【OpenOCD】

組合せ 1 は、Windows上のみのサポート。私のところでも動作確認できている。
組合せ 2 も、Windows上のみのサポート。最も一般的なはずなのだが、私のところでは動かない。
組合せ 3 は、Windowsおよび Linux 両方のサポート。残念ながら、私のところでは動いていない。
組合せ 4 も、Windowsおよび Linux 両方のサポート。私のところでは、WindowsでもLinuxでも正常に動いている。

私が言うのもなんだが、私すら手こずって動作確認できないのは、お勧めできない。動作確認さえできれば、組合せ 2や 3も良いのだが、やはり止めておく。特に、組合せ 3は、これが動けば理想的なんだが、そうもいかない。

さて、残った組合せ 1と4では、それぞれ『ST-LINK』と『JTAGkey』と言うインターフェースが必要で、これはハードウエアだから、買うなり作るなりする必要がある。

ST-LINKは、秋月やストロベリー・リナックスで 2500円程度で売っているので、入手は楽だ。難点は、STMicroelectronics の純正なのは良いんだが、ガードが固くて中がどうなっているか判らない事。そのため、アプリケーションも STMicroelectronics の純正か、TrueSTUDIO (Lite)のような製品もしくは体験版だけとなる。書き込み用の ST-LINK Utility は、それなりに使えるのだが、私の場合、TrueSTUDIO (Lite)が動かいないので、デバックができない。もし、ST-LINKの中身が判れば、オープンソースのアプリケーションが作られるのだろうが、そうはいかない状態だ。

それに対し、JTAGkey は本物は1万円以上と高いし、どこで買えば良いのかも良く判らない。しかし、中身は良く知られているので、同等品(JTAGkeyクローン)を自作するのは簡単で 3000円程度で作れる。また、中身が知られているのでオープンソースのアプリケーションもあり、Windowsだけでなく、Linuxでも使える。JTAGkey は、JTAGインターフェースのデファクトスタンダードなので、STM32だけでなく、各社・各種のCPUマイコンやFPGAにも書き込める。それに対し、ST-LINK は、STMicroelectronics の STM8 と STM32 だけしか対応していない。

主に、LINUXを使っていて、余りお金をかけられない私としては、JTAGkey クローンが唯一の解だ。

と言うわけで、ここでの結論は「JTAGkey クローンを使ってSTM32にプログラムを書き込もう」って訳。
作り方は、また次回・・・
inserted by FC2 system